Hello,
we do something like that and we use two triggers for it:
Trigger A: For each item after it has been created (via "Create Item" or similar), the item ID is copied into a separate field, e.g. "ID_for_Copy", by trigger. This means that each item will have its own ID again in an extra field.
Trigger B: This trigger looks into the field "ID_for_Copy" and checks whether the content of the field matches the ID of the item. If not, the trigger will enter this value in a relationship field.
If an item is copied now, the following happens: The target item is created and the fields contained in it are filled with the contents of the source item. The field "ID_for_Copy" therefore contains the ID of the source item, because Trigger A wasn't run until now. Trigger B runs first and it links the source item into the relation field of the target item. Trigger A then runs after Trigger B and overwrites the field "ID_for_Copy" with the new item's own ID. In the end I have a new item with a relationship field to its source item. This relationship field is only filled if the new item was created by a copy, but not if it was created directly by "Create Item".
Maybe you can use something out of it...
cheers, Jens