I've seen the same experience. Our typical daily access is 35-40 simultaneous, and most of their access is limited to entry and simple reporting. IWP has no CPU problems in this situation.
When I have allowed reports or screens to sort through large record sets, I noticed the same thing you have -- it's like there's room for one CPU that pegs at 100% or more, and all other wait.
My observation is that FileMaker users get the multi-CPU or multi-core goodness, while IWP does not.
IWP as a general feature I think is on it's way out (given the chatting happening about version 13 on the boards), so support from FM is going to remain limited.
If you want away around the performance limitation, take a look at 360works remotescripter. It allows you to run a "robot" machine to generate reports that you store in container fields for your IWP users to access, this is usually quicker then trying to do the script directly via IWP since it doesn't use the web publishing engine, but it requires a dedicated machine (can be VM), the plugin, and another copy of FMpro.
"Given that it is supposed to handle up to 100 IWP sessions simultaneously, shouldn't the WPE continue to process other users requests while running the report script from the first database?"
Well, yes and no. Session based connections are different from actual data requests. From what I've seen it's still transactional, meaning requests for running a script, loading data, drawing views, etc.. are queued and handled in the order they are received. This is how FM12 can run incremental backups, and such, without the databases being suspended temporarily.
Also, version 9 is over six years old now. I would highly consider upgrading. At least FMS12 is designed for 64-bit processing.