The hyperref documentation says: "Make sure it comes last of your loaded packages". The reason is that it redefines many LaTeX commands. It's a rule of thumb that helps to avoid errors.
However, there are exceptions, for instance the amsrefs user's guide notes that amsrefs has to be loaded after hyperref.
To avoid problems when adding hypertext functionality: do you know further such exceptions?
\ExecuteAfterPackagesequences. Although I have to check with all the packages meantioned here!pkgloaderpackage: i’ve only speed-read the docs, but it looks a good step towards automation for the job. (i assume it’s a never-ending process, keeping it up-to-date, but it's looking good.)