Detecting multiple unique gameobjects using LayerMasks ?

I have a random generator which generates a dungeon using it’s own rooms as spawners (each one spawn correct connections to itself), and or rare occasions I have a bug where two rooms are spawned on top of each other because they try to detect room, return with nothing, and spawn at the same time. I also have this “sensors” placed at each potential room location that I use as wrap up and fill for my level generation.
Now, I want my sensors to be able to detect if there are two or more rooms at their location so that they can destroy them and put a 4 way room instead. I don’t want all my rooms to have a Rigidbody2d so I’ve been using Layermasks Collider2d x = Physics2d.OverlapCircle instead of collisions Collider2d.OnCollisionEnter to detect rooms so far.

public LayerMask room;
public List<GameObject> rooms;

public void Update()
    {
Collider2D roomDetection = Physics2D.OverlapCircle(transform.position, 1, room);
roomDetection.GetComponent<RoomManager>().Count(); //adds Gameobject to rooms list only once. 
if (rooms.Count >= 2)
            {
                Debug.Log("Destroyed One");
                GameObject.Destroy(rooms[0]);
            }
}

This one only detected one room that was on top of the other so it never destroyed anything, I’ve also tried using array and OverlapCircleAll but couldn’t get it to only detect unique gameobjects.

At this point, I’m sure I’ve been going about it in a very roundabout way so If you know of an easy way to detect if there are multiple unique objects of the same type/tag/layer at the current object transform, accessing them and destroying them without the need for Rigidbody2d, I would appreciate suggestions.

For now inside my room scripts(objects that I wanted to destroy if there were multiple) I’ve put a line:

public void MultipleRooms()
    {
        Collider2D other = Physics2D.OverlapCircle(transform.position, 1, room);
        string otherTag = other.gameObject.tag;
        if (other.gameObject != gameObject && gameObject.tag == otherTag)
        {
            Destroy();
        }
    }

And I invoke it few seconds after a room have been instantiated. For whatever reason it seems to work. Really thought both rooms would destroy at the same time with this solution.
Still even it this achieves the effect that I want, I would prefer if those seperate sensor gameobjects govern that part of generation and not the rooms themselves.