I just noted the scan time when I was trying to solve this problem so no effort has been made to see if it could be better. We have about 10 analog inputs, 4 high speed inputs, 4 pulse outputs, that are not real fast, and 5 VFDs on PID loops communicating via Modbus, and a C-More that does continuous logging of data. My suspicion would be that the way I implemented Modbus is huge resource hog. I do use stages everywhere possible.
One thing to consider is that our product is a tiny membrane waste treatment plant rated at 10,000 gpd but the reality is it has virtually identical I/O to a 5 million gallon a day plant, so maybe not too bad.