You can create a schema based on a model:
from plone.supermodel import model
class IMySchema(model.Schema):
model.load('path/to/model.xml')
Any fields defined in the Python schema will take precedence over those with the same name defined in the model.
The model is loaded at the end of the ZCML configuration phase. This means there's a caveat: You can't refer to a field from the model at module scope anywhere. For example, registering a default value using the @form.default_value(IMySchema['foo']) decorator will not work, because the field hasn't been loaded yet at the time when the decorator executes at import time.