Have you heard of Composition Root? You register stuff to specific implementations only in the top most project, the web app for example. Everywhere else you code against interfaces.
Sounds like you already invented this by yourself and I can't really feel the problem - since this is the top most project to reference all the stuff, including web, owins, ninjects and others, there really should be no problem here.
My advice would be to never use singletons. Instead, have factories or local Dependency Resolvers. A resolver is a part of local infrastructure that serves as the hub that creates services in an isolated subsystem. The resolver can be safely used by its surroundings, it doesn't reference anything but it has a configurable provider that again is set up in the Composition Root.
This way, if the resolver uses a specific implementation or even specific DI container, all it set up in the top most project.