I personally suspect the issue is IIS (admitted I'm an Apache fanboy when it comes to webserving; I've dealt with IIS before), which is probably fighting for CPU resources against MySQL.
Theoretically speaking, though the forum may see as many as 5,000 users online at any given time, only a small percent are executing any SQL INSERT/UPDATE commands (eg: posting replies); most people are probably just clicking through threads, checking unread threads, so those MySQL queries ought to be cached in memory.
The theoretical problem is if the server is executing the PHP script every time someone clicks on a thread, even though no posts have been made. Eg: the PHP ought to only be run when the MySQL query result changes; if the MySQL result is the same as the most recent query (and thus MySQL is serving cached data), the server ought to similarly serve a static HTML page of the most recent execution of the PHP script.
Whether IIS does this or not, I'm not sure (though I'm inclined to say no, because MS built IIS with ASP/X in mind, not PHP, so there may be a lot of missing optimizations). Something like lighttp to cache and serve static/unmodified content would be great (and would require minimal hardware upgrades), but how hard it would be to implement with this forum software and whether or not you can get IIS to work with it is beyond me.