I like to do minor refactoring as part of any given new feature (even if unrelated). It helps take bites out of the larger pieces over time.
"Tolerating a bad employee versus firing and rehiring"
Inversely this also gets into something I often see where companies sit and wait for the best possible candidate (everyone claims to hire the best...) and so rather than hire and try people out they take a long time and hire someone and hiring being a non exact science.... doesn't work out. Maybe people need to try folks out, even maybe the person who doesn't have every bit of alphabet soup on their resume?