Yo creo que la complejidad no es problema si se documenta bien. Además, podrías ofrecer ambos patrones como plugins. Respecto a migraciones, te sugiero mirar cómo lo hace SQLAlchemy con Alembic, aunque sea muy pesado para tu idea. Podrías implementar un sistema simple basado en archivos JSON con versiones.