If the blocks are not too heavy or not xrefs, I would simply explode them, then make a rectangular selection, put it to the clipboard, then undo the explode command, then pasteclip.
Sound very noisy routine but I think it will work, If the blocks are not too heavy or not xrefs, anyway.
The given lisp doesn't run copy command. It gets the block name, insertion point, scale, then insert a new one to the current space, with transformed parameters. That is good, the clipboard can be dropped off.
If there is Xref, then a block name from xref database insert to current drawing database will be very tricky thing to do.