Yes, there is such a problem. It's probably futile to completely avoid messy code (just look at the organically grows natural languages) though.
In addition to already suggested microservices (which are actually useful only when there is suitable subdomain - otherwise they only bring more hassle), I'd really looked at how code lives it's life. A lot can be achieved by finding and refactoring the "hotspots" (frequently changing, usually buggy modules, "god classes").
For the developers to keep code clean, it helps to read the code before adding anything. Even copy-pasting some boiler-plate is less harmful when it's done systematically: It's easier to refactor consistent code than a bunch of modules, where everyone invented interfaces on his own... In other words, it's better to either do full refactoring rather than inventing a better way and leaving only one example of it in the code...