What OS are you using? I have successfully used the LV5.1 serial port VI's on a couple "legacy" projects and have had better results under Win98 than Win95. Remember, the old serial port VI's call the Windows 3 style API's, meaning that they run on the UI thread. This can lead to unexpected interactions with other parts of your code.
Also, you mention that you must repeat the serial port initalize function for every iteration. I've never found that necessary. (In fact if you drill into the underlying code I think you will find a test for existing initialization condition using a global.) Are you also calling the serial port close function at the end of each iteration?
Yes, the VISA serial port functions are more robust and better behaved, but the old Windows API based functions can still work assuming there are not a lot of other demands on system resources.