The approach you suggest seems to be difficult. I see a couple of things you need to find a solution for.
(2) When dynamically creating Hibernate entities, you would need some classloader magic to make them available in the running application. This would need to be done in a Spring aware/compatieble way. Don't know is there are easy solutions to this.
(3) is releated to (2), don't know how you can re-init Hibernate to make this work.
(4) is currently not possible though there is a plug-in in the sandbox to make dynamic loading of layers possible (have not tried it yet, so I am unsure of the state of this work).
However, in the Ktunaxa RMS project, we handled something similar by having one table for all the features from shape files and a linked table for the attributes. This makes it possible to add data in the layer at runtime and still access all the attributes. See the Ktunaxa project (https://github.com/ktunaxa/rms/) for inspiration. Geomajas allows mixed geometry types so there is no worry there.
If you use caching and/or rasterizing) you would need to make sure that the cache is invalidated when you add data in this layer.
Though there are some downsides to this approach, it is by far the easiest way I can image to handle this kind of problem in Geomajas using released components.