Alright, after a bit of testing, this appears to be working for what you are looking for...
Basically, anywhere that you see this in the code:
Change it to add this line first, as follows:
This clones the source, puts it before the current source, then allows the original source to be removed/moved (I tried removing the line blah.remove but it didn't work!). This way, you create a copy of the node (wherever you are dropping it) but it keeps the original node in its original position. Checked it with every copy scenario I can imagine on my test page, hopefully works the same for you.
Let me know if that works for you. :)