It's easy to argue that extensions are "covered works", or "works based on the program", so if any ambiguities exist, my application will be less attractive. Is it reasonable to release my own version of the GPL with an alternative definition of "covered works"?
No, do not do that. There are already too many open-source license as we speak and adding another one that is deceptively similar but different from a widely used license will only make it worse.
Moreover, I expect that the legal departments of those corporations you want as your users will block the usage of your software until they have studied the license text for a few years to be sure there are no hidden surprises in there.
Could I release the development libraries under MIT and the application under GPL? Any incompatibilities?
That is not going to help you. From the GPL FAQ:
If I write a plug-in to use with a GPL-covered program, what requirements does that impose on the licenses I can use for distributing my plug-in? (#GPLAndPlugins)
Please see this question for determining when plug-ins and a main program are considered a single combined program and when they are considered separate work..
If the main program and the plugins are a single combined program then this means you must license the plug-in under the GPL or a GPL-compatible free software license and distribute it with source code in a GPL-compliant way. A main program that is separate from its plug-ins makes no requirements for the plug-ins.
When is a program and its plug-ins considered a single combined program? (#GPLPlugins)
It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.
If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.
Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.
If your application does not have any dependencies that are under the GPL license, then you do have the option of using the GPL license with an additional permission. For example, you could give a permission like this
"As an additional permission, plugins for <application> may be distributed under the terms of their author's choice without being bound by the requirements of the license of <application>. This permission does not extend to changes made to <application> itself or its development libraries."