Can you link two mesh objects and keep the UV mapping each one has?
You can do this with a very simple python script 

# make sure to be in Object mode
# make sure to have two objects selected
import bpy
import bmesh
from mathutils import Matrix
from contextlib import ExitStack

def work():
    C = bpy.context
    if C.mode != 'OBJECT':
        return
    if len(C.selected_objects) &lt; 1:
        print("Must have at least one object selected")
        return
    # read into bmesh safely
    names = []
    with ExitStack() as stack:
        bm = bmesh.new()
        stack.callback(bm.free)
        for o in C.selected_objects:
            if o.type != 'MESH':
                continue
            m = o.matrix_world
            bm.transform(m.inverted())
            bm.from_mesh(o.data)
            bm.transform(m)
            names.append(o.name)
        # write to actual mesh
        mesh = bpy.data.meshes.new('Result')
        object = bpy.data.objects.new('Merge(%s)' % ', '.join(names), mesh)
        bm.to_mesh(mesh)
    C.scene.objects.link(object)
    C.scene.update()

work()


I hope this fulfills your needs, I figure you can easily adapt to even more objects but this script should do what you want. Just copy and paste in into the text editor, select your two objects and hit the "Run Script" button.

EDIT: the script can now handle indefinitly many objects.