I would lean toward not inheriting from Model (or any other) class.  Using the approach you did here for many mixins will result in difficulty combining the mixing together.  For example, if we also had the TimeAgent interface inherit from Model, then we end up with messy diamond inheritance for agents that want to be traders and timeagents.  The mixing, if done in the cyclus core, should probably occur at the FacilityModel, etc. level.