You seem to have most of the answers already. And your site is terrific, so you're doing some great work.
As you guessed, pages are individually compiled on the first access. The only exception is App_Code, which is compiled completly the first time the site is hit.
To speed it up you can precompile the site into a DLL. This has 2 forms, a partial precompile will leave the .aspx pages "updatable". A full precompile means you can't update individual pages.
You can get a hint of the server load from
www.whois.sc - this tells how many other sites are on your same server. The number is often in the 300-400 range, thus explaining the slowness. I'm not complaining - I'm pretty tight with my money and I like the unlimited bandwidth and relatively cheap SQL Server hosting at WebHost4Life.
There are some opportunites to add more caching to TBH. Many pages can have output caching enabled to cut down on the hits to SQL Server. I could write a book on performance tuning alone - it gets pretty complicated sometimes and you have to profile your site to see the effects of certain changes.
The big secret to easily speeding it up is to set up a windows service on your home PC that hits the main pages of your site every couple minutes. This can speed it up considerably. The caches will stay full, and you'll keep connections in the pool for quick re-use. The effect on overall performance is surprising. And there are other reasons for doing this that I can't get into here.
Eric