"Allow required initializers in extensions, and require subclasses to implement these initializers (even if they just call super)"
Is that possible? The subclass could live in your application, and the extension method in a plug-in that isn't known to the application (needn't even be on the system or _exist_ when you launch the application)
That may work, but I would have to think hard about all kinds of weird scenarios before being sure of it.