Woooo hoooooo!
It's sorted now, all thanks to agrams and a post on here back in March 2004:
http://www.mattreinfeldt.com/forums/ubbthreads.php/ubb/showflat/Number/93887/site_id/1#importThe crucial part of the post in my case was:
The solution is to set the default user options in SQL server to XACTABORT on. This was accomplished using stored procedure spconfigure
USE master
EXEC sp_configure 'user options', '16384'
RECONFIGURE WITH OVERRIDE
You have to restart SQL Server after this change.
The 'user options' value is a bit mask value, where the default value is 0. 16384 is the bit mask value for XACTABORT. This allows SQL Server to process distributed transactions using a method ARS understands.