Just because it's hard doesn't mean you're in the right
I do sympathise to some extent, but you can't have your cake and eat it. Want to do as you wish? Rewrite/with permission relicense all necessary code.
This is also still a considerable level below what Microsoft does with Windows. If you read Raymond Chen's Old New Thing blog you'll know Windows has custom installer code built in to shim 32 bit programs that still shipped with 16 bit installers, custom memory allocators to work around broken memory allocation, and many other shims to allow for incorrectly coded but popular applications.
Also, Windows has a driver model that doesn't involve sticking everything into the kernel, and moving functionality where possible up to userland/ring 3. Although I'll admit I'm not up to date on how much progress Linux has made moving driver functionality outside kernel space.
Alternatively, the OpenBSD route could be taken : security first, (almost) no compromises. If the change breaks applications, the applications have to fix it. In the end it works but can involve a lot of short to medium term pain.