It sounds like you're not doing things in an optimal way, but it's hard to tell because you don't provide enough details on what you're doing. Saying "it's Labview" doesn't help much. For instance, is each step of the motor initiated by a new command from Labview? If you're sending the step commands sequentially to each motor then you may well end up with a lower speed. I think that's what you're doing.
The whole point of the Arduino is that it's a programmable real-time board. But it sounds like you're using it more like a cheap alternative to an NI USB-6009 (since we're talking NI products here). I think the problem is that you're not using the hardware to its full potential. Ditch the Labview interface and write your program in C as an Arduino sketch. You then control the Arduino via serial port commands (which can be send via the USB serial connection). The goal is not to have the PC tell the Arduino when to take each every step, but to tell it, say, "turn motor A clockwise at 300 RPM and motor B anticlockwise at 400 RPM" (or whatever). The PC sends one brief command and then the Arduino gets on with it until told otherwise. That's how a microcontroller is designed to be used.