Well... the answer is to use apps.
That's what they're for. They were designed the way the are exactly because standard modules don't provide the level of integration needed.
If you start hacking away on your library to make it work on its own, you'll end up with mess of code and glue about the same size of a django app, but with considerably worse smell.