Andy - It was how I was doing it, but as I wrote earlier the issue is that the tool change scripts are executed and then the next movement command for the new tool, which inevitably is some distance away.
What I ended up doing was used "Z hop" in the slicer (0.2mm worked fine for me) which raised the ehozzle by just enough to clear everything whenever there is a travel move, and also happens on a tool change.
Edited to add that all movement in a G1 command is executed to synchronise over the move. If you want XY, then Z, use two G1 commands.