Hampden and Celtic Park are both truly awful, for the valid reasons you've outlined.
McDiarmid is a soulless, windswept morgue. The fact that there are so few fans attend makes it look even worse.
StJ ground is fine considering its not serving too many fans from a small town although in the last few years Perth has been expanding.