Why not remember every package that a user requested as additional install and offer them to reinstall after an upgrade. I guess that would not cost very much effort to realize something like that.
I assume best practice would be to only remember the requested packages exactly, not their dependencies because they might have changed after an upgrade.
If the exact same name of a package is not available any more, the user can be informed about what's missing and maybe offered alternatives.
I really think this topic needs improvement. I used this forums hint a lot and hardly had any problems.