Well I found what was causing the problem, the good news is that it doesn't have anything to do with the toolkit.
The bad news is that I still don't quite understand why the problem was so erratic.
I have a .net user control that executes the synchronization on another thread so that a progress bar and status message can remain updated. This object is COM accessible and is used inside our application (written in PowerBuilder). The class exposes several events, one of which I called SqlCompiled. All this event does is return the SQL of the executionblock before it is executed...however it seems that this was causing the thread to abort prematurely...I'm not sure if it was because of the size of the string being returned, or just a race-condition, but commenting out the code that raises that event fixes the problem. Go figure.
So I guess the lesson is to log your sql to a file, rather than trying to pass it around all over the place in memory
Thanks for the help, it did help me to stop looking at licensing and deployment as causes of the problem and dig in a little deeper.