Hi Paul,
Upgdate of macro signature can take very long time during upgrade to v8. Depending on number of objects(pages, contacts etc.) this can take very long time as each DB field is evaluated for macro existence and if it is found, macro signature is updated.
There is tweaked upgrade procedure class, that excludes OM tables and objects from this process. This class and procedure run is last part of upgrade executed at first request to application. You can find the procedure at:
https://gist.github.com/ondrejsevcik/d580d237c42bce2ddd9d
It is not something that is officially supported, but it can be used to speed up this process and if you know what objects to exclude, you can extend list in this class even further. OM objects are excluded since they do not contain macros and there can be lot of contacts with number of fields that would otherwise be processed by UpgradeMacros method.