Yes it gets tricky when you are trying detect which imagepoints are used but without using an overlap. You could literally set an instance var for each imagepoint I suppose and when it has been picked, then it is set to used. Then you would need checks such as 4 is picked, is 4=used, pick another imagepoint if 4=used.
Regarding the overlap checks, yes it will destroy both as you need to pick one of the objects in the collision. You can use a comparision nth instance in overlap checks. When an object overlaps an object, pick nth instance 0 is one of the objects, pick nth instance 1 is the other object. This is how you can differentiate between the two overlapping objects and destroy only the new one.
To use actual spawn points rather than a single object with imagepoints, you set the spawn points up with variable. Pick a random spawnpoint where the instance var is not set, then spawn the object.