With some minor modifications, you can teach the User Import/Export Plugin of Openfire to merge rosters when importing instead of disallowing to import existing contacts.
My modification of ImportExportPlugin.java for Openfire 3.4.4 can be used in the plugin. Compile it via the command ant plugins.
As the original, this is GPLed.
Attention: For some funny reason at least for MySQL it is possible with this plugin to have the same user in the roster DB multiple times but in the roster itself it will only show up one time. I have no idea why the table definitions and the Openfire code is like that, but I will look into it.