I take it that you have not yet stumbled-upon use lib ...?
Anyway, when you do, this is probably going to be what you want. I would have one directory for application-specific modules, another for CPAN-overrides, and in the main-programs of your application simply list them both in a use lib declaration.
Perl will search the libraries declared here, in order, before it walks down the @INC list... (I've got several deployed apps where I'm having to override CPAN-modules that are seriously-broken, and the owners of those modules continue to “upgrade” them without fixing the bugs. I will not name them here.)