Alright I've refactored SiteSettings moving the pagecollection and the current page out of its internals so it could be cached.
I've also done a little minor tweaking to the Cache feature that is already built into SiteModule.
I ran a baseline test this morning before making any changes to SiteSettings
Baseline Before Site Settings refactoring
After Refactoring SiteSettings
Then I tried setting a cache time of 360 seconds in the module settings of each module on the test pages.
The next test I ran was actually a little slower so I reviewed the CachedSiteModuleControl.cs and noticed it was using Context.Cache rather than Httpruntime.Cache, wasn't sure if changing that would help but it apparently did. I also made a few other tweaks so that the cache key would be different for users that can edit vs thos that can't and by current culture.
After Applying Tweaked SiteModule cache
Pretty good improvements!