First of all, thanks to everyone who provided me with helpful hints and advice. I found the reason why the C# program was performing so badly, compared to it's VB counterpart.
If the C# code had been written as part of the 'normal' development solution, I would never have had this problem. But unfortunately, when you start a C# console project, the main method does not get the [STAThread] attribute. I haven't figured out yet why a console program is lacking this attribute by default, but when added to my example program the C# and VB code perform exactly the same (give or take a few milliseconds).