This is a long shot. Our distributed tests have been running slowly on the VM's. Performance metrics did not show much activity of interest and the symptoms were pretty much those of an I/O bottleneck. Monitoring TestComplete10 with Sysinternals Process Monitor showed a large number of calls back to the developer machine. Doing a DOS findstr on the workstation name in project files showed that the VM's were querying the developer station for performance metrics. Removing the metrics got rid of the problem.
Of course, the VM's are still slow compared to workstation, but performance is much better in general.
For that particular project, I had turned on four performance counters that tracked the authoring machine's stats. Whenever another system opened the project with TestExecute, they were also trying to track the authoring machine's stats during playback.
I deleted the Performance Counters, and everything is smooth as silk now.