Thanks for that. For anyone else who might want to use this, I had to reverse the calculations of dx and dy (instead of batchBounds.Center.X - location.X, it should be location.X - batchBounds.Center.X).
Also, to get the correct coordinates of where to paste based on the location of the right mouse click I used NNodeMouseEventArgs.ScenePoint when handling the mouse click event. This takes into account zooming and scrolling of the diagram.
Pretty advanced method - I'm sure I wouldn't have been able to figure it out on my own. Maybe add it as a supported method on NDrawingView in a future release? Seems a pretty standard way to paste (Visio for one does this).