After some tinkering, I've gotten the designer plugin to work the way I originally wanted. I simply commented out the 'module' directive in the 'qmldir' file:
# module MyLib
typeinfo plugin.qmltypes
plugin MyLib ../
designersupported
and added some qmake targets to automatically run 'qmlplugindump' post-build.
So now my plugin directory structure looks like this:
/imports
|---MyLib.dll (or libMyLib.so)
|---/MyLib
|---|---qmldir
|---|---plugin.qmltypes
Now I can get the plugin to run in 'qmlscene':
qmlscene -I <imports directory> <main qml file>
There are only two caveats in this case. First, QML files that are to import anything from the library must first import 'MyLib 1.0' before importing anything else ('MyLib.Rectangle', 'MyLib.Circle', etc.). This is so that the plugin is loaded initially to populate the other imports. Secondly, this will produce the following message when the plugin is loaded:
Module 'MyLib' does not contain a module identifier directive - it cannot be protected from external registrations.
However in my case, this is not an issue and can be safely overlooked.