Is it possible to join multiple objects without losing their own UV spaces?
As long as your UV maps have unique names(before joining), they will be kept separate when joined into one mesh. You can change the names of UV maps in the Object Data tab in the Properties Editor:



UV Maps Panel

Multiple UV Maps