Thank you for this suggestion jayderyu. It is the solution I picked, and this is how I went about it.
I have two different sprite objects based on the same image. I make one invisible. When I create a new instance of the visible object, I also create an instance of the invisible counterpart and pin it to the visible sibling. I set the z-order of the invisible instance to bottom so the visible instance is always pickable. I added an 'siblingId' instance variable to the invisible object on which I set the UID of the visible instance.
On the drop event of the visible instance, I check that it's UID is not the same as the stored ID of the receiving invisible instance, and this prevents false positive trigger of the visible instance colliding with its own invisible sibling.
To properly clean up the invisible instance when the visible sibling is deleted, I set up an On Destroy system event for the visible object, and do a for each loop on the invisible objects, and destroy the one whose instance variable matches the UID of the just deleted visible instance.
FWIW, I also tried the container approach, but the collision detection wasn't consistent. I might explore that a bit more at a later time.