All of that said, there are a number of times where it might make sense to rip apart and refactor pieces. In a relatively good piece of software you can do it. Even in a mediocre piece of software, you can start cleaning things up and get to that point. But it makes no sense to rip something apart that works as expected and replace it with something completely new. That's not working smarter. That's just working harder to maintain the status quo.
When I sold software my biggest competitor was the status quo. Customers needed a compelling reason to change their system. It wasn't just a question of the expense of the system, it was the costs associated with installation and training. Customers want the greatest gain in function with the least change of their present method of operation. Completely rewriting your software to achieve some technical ideal has no benefit for customers.