Well, about that, just a couple of weeks ago, I had a client with the same problem. They had something that didn't work, with lots of small bugs (some very annoying), but it was soooo deeply embedded in the application that touching that it could mean stopping development for weeks or months.
So, I then suggested a different strategy: just duplicate the structure and create a new one to solve the one problem that was the most annoying. In a couple of days it was done and solved, and then a lot of problems become far easy to fix.
Just the past week they called me back, and they happily reported that a lot of things were fixed, and they are now on the right path.
So, if everything goes as planned, in just a few weeks, they'll have fixed most of the bugs, added new features, and all that without taking any risk of unexpected failures. It sounds like a lot, but the idea is that the new structure will gradually replace the old one with time, and the old one, which was poorly designed (was the source of so many problems) will disappear.