I think I have sussed it after reading https://www.scirra.com/tutorials/556/understanding-picking-with-respect-to-families
However, the resultant code is too long to hand type here.
Basically, I have a function "placeShip" with "pick instance with UID Function.Param(0)" after it. Then I call this from the "for each ships" function. Then I have a separate event "ships Is overlapping ships" with a "Pick ships instance 0" after it. I am hoping that this is picking the first overlapping instance from the family, not the first instance in the family (which may not be overlapping).
How do people paste code or screenshots into the forums?