Simplify datamodel field management

Keep fields in a local _fields dict, define fields as class variables
and copy them on instantiation