There's kind of three schools of doing libraries.
And also where you put them, how to organize etc. As in, toss everyone in one omni-lib, or split them up by brand, or by type/category, or by project, etc...
Anyway, you can use the generic approach, that's one way. Avoid pushing updates from lib. Make component selection in SCH. This seems intended, as you can easily apply supplier links here. It does take a bit of time to update every component, but you can speed things up a bit using Parameter Manager, copying from spreadsheets, etc.
Another way is what you've chosen, making highly specific libraries. This sucks to replace components, not just to change ratings but even just part number, as you've found. It does make things more consistent, putting responsibility all in one place, the library.
The third, more "enterprise grade" solution, is adding a level of indirection. Create a database of internal part numbers, and assign approved MFG/PN as an ongoing process. Which can be done by procurement without involvement of engineering, necessarily. Libraries will be single-type as above, but what ends up on the board could be anything -- but you're also sure (to the extent your substitute list is correct) to get things that work.
Tim