Cheers for that.
I have read similar comments elsewhere but nobody seems to have known much about the causes and internal workings of the function. I know that it opens and closes the socket to the smtp server for every mail sent which is a big, and unnecessary, overhead - but it would still seem very slow.
Using a direct smtp session with the socket opened at the very start and then closed after sending them all has given an amazing speed increase with less system load. Lists that used to take minutes are now completing in seconds.
When I have managed to find out more about the whys and wherefores I shall write a quick tutorial/article, which may be of use to some people. There are some articles on here and devshed already, but none of them are particularily comprehensive.