I'm old. I've seen this more times than I can count. There's always a whole lot of assumptions that just never quite pan out as expected, do they ?<p>Rewrites always end up taking way more time and resources than anticipated, and you'll ultimately end up with something that has fewer features and not necessarily considered "better" by your users.
Refactors on the other hand can get you some wins faster, but will probably be abandoned half-way through and as such contribute to the increasing unstability of the code base.<p>But hey, you're a good cookie, at least you're thinking and asking the questions.
I'm sure you can rewrite the codebase cleaner, technically, but can you also pull it off organisationally (long term mgmt committment, sufficient budget, resources, time and priority ?). If you say there are hotfixes by inexperienced programmers, obsolete business requirements, skipped testing etc., you need to ask yourself why that is and how it came to be, and whether you can really pull off a rewrite under the conditions that led to the current situation ?<p>So yeah, I tend to favor refactoring, at least you'll end up with something.<p>Also, applicable xkcd: <a href="https://xkcd.com/927/" rel="nofollow">https://xkcd.com/927/</a>