Blender Global undo is very slow on complex scenes
The undo buffer works by actually saving the entire blend file in memory, and loading it to undo. If you have such big, complex files, that'll take a while.

A possible way to speed things up would be to enable Simplify (scene properties panel) to restrict the subdivision level, and to write parts of the scene to different blend files and link them into the scene (rather than having all data in one blend file).