BTW: the only ways to get custom metadata into an instance of Metadata are to put it there yourself or to call get_metadata. It will never be there if you create new instances of Metadata(), with or without a subclass.
The following should work to add custom metadata to a Metadata instance:
Code:
mi.set_all_user_metadata(db.custom_field_metadata())