I probably do it backwards, i dont use dbix::class just mojo::pg and like you my app is a big one. I think the Plugin route is a good way to do it but I didnt go that way. I'm using Mojo::Base for my model classes.
my controllers handle the views and the requests and create new objects of my models (i know i should use helpers...), my models handle anything that requires a database connection or something related to the table or view. I pass in the session, db, and anything else needed when making the object. So for an employee listing page for example, if i was getting a list of employees but needed to manipulate them, i would run my query, alter the data, return it. my controller picks it up and shoots it to the template view.
My models aren't always a db connection though sometimes I need small tweaks and I'll just make a subroutine in that model because it's still related in a way. Is this bad blending my model with a non database subroutine probably but its related to the database table/controller/view so i'm going to keep it how it is.
Hope this gives an idea.