The \"OSGi way\" is to develop separate bundles containing discrete, coherent pieces of functionality. Sometimes these bundles contain utility classes, sometimes they depend on
I think the word you're looking for is 'subsystem', I think there is an OSGi draft spec. out there.
My personal view:
Build your bundles and store them somewhere (For example a Sonatype Nexus server, I'm pretty pleased with it, it even has support for OBR and a limited support for generating p2 data)
An 'application' is then a selection of bundles with a certain version out of that repository, which you can version again.
There is no real standard yet, I think at this point you'll need to pick one of the non standard ones out there. The cost of changing to the standard one or even support multiple ones shouldn't be all that great.
These slides mention all of them