If you have a team you need discipline, code reviews, and leadership. No state solution is going to solve this for you.
Maybe extra tooling could be built to avoid this, if we weren't already drowning in linter plugins...
I also disagree about the big re-write. Converting a hook's data/state to come from a prop instead is a very simple change.
I believe this model has similarities to both Apollo and Angular services, though I don't have direct experience with either.
EDIT: quick example here https://codesandbox.io/s/unruffled-easley-ry6x2?file=/src/Ap...
This is a fairly innocuous example since the bug is immediately apparent from the button not working. Now imagine the failure mode is more subtle, and these components are about two dozen layers apart down the tree.
And I'd like to be very clear that I strongly advise against cutting through layers with context because I wholeheartedly agree with your assessment there. You can plumb down those handles explicitly through props and enforce they're provided in a type system.