Fixed it! Not sure why, but adding a ClearToSend() after processing the G5 code has sorted the weird hanging issue. Ran a quick test drawing a fairly complex monster with loads of bezier curves (converted from an SVG I found online) and it is very impressive. Watching a pen zip round the curves at one hell of a pace has left a great big grin on my smug mug. Good place to call it quits and get some sleep... will try and post a video of it in action tomorrow.
Guess this means I'll have to look at adding bezier curve path smoothing to Slic3r - at least I can start with the arc detection as a basis. Least squares and Newton-Raphson, yummy.