You might try moving away from your proxy caching for some pages, or even all.
- There's no reason not to use a CDN for static assets and media library assets, so stick with that
- Leverage Sitecore's built-in html cache for sublayouts/renderings - there are quite a few options for caching
- Use Sitecore's Debug feature to track down the slowest components on your site
- Consider using indexes instead of doing "fast" or Sitecore queries
- Don't do descendants query "//*" (I often see this when calculating selected state for navigation - hint: go the other way, calculate the ancestors of the current page)
@jammykam wrote an excellent answer on this over here.
John West wrote a great blog post on this also, though a bit older.
Good luck!