I fear you have not used package interfaces, right? This would be e.g. a possibility to check usages, independent from the where-used-list.
Maybe there exists a Code-Inspector check with source code scanning, but this would be worse in execution for many objects, I guess.
Another idea: delete the obsolete package and start a syntax check for the possible affected packages (there exists a report, but sorry I havn't it in mind yet). Try & Error Approach; not the best or kindest, I know.