First decide whether the pain is local or structural
If the trouble is concentrated in a few modules, screens, or performance bottlenecks, gradual refactoring may be enough.
If workflow, data model, permissions, and module boundaries are all failing at once, patching can become a long-term trap.