The way we dealt with this a couple of years back is that we disabled deprecated checks for the compilers, but added them as a linter pass in a commit hook. This has worked really well because we can add deprecation more or less arbitrarily to broadly used libraries without adding noise to peoples builds (or failures for the parts of our system that have Werror include deprecation), and have the linter only flag on changed code. It puts a pretty hard stop on people adding new calls to deprecated functions and starts a slow organic migration while we work on properly migrating people.