It should be possible to define a Java class and a specific Hibernate Mapping for an XWiki Class. This shoud not be 100% dynamic but developers would have to make sure they handle this correctly.
Why having a static mapping, it shoud be possible to add dynamic field on top of the dynamic definition.
Test implementation should be made with Preferences, Users and Groups. Migration scripts shoud be automatically generated from the dynamic mapping to the static mapping.