Более того у transform можно запрашивать его дочерние объекты. Это уж точно лучше, чем искать объекты во всей сцене.
Но в вашем случае где, все элементы канвасы - идеально GetComponentsInChildren<Canvas>(), если конечно там глубже их нет.
Это вы из разряда, чтобы угадать PIN у меня есть 3 попытки, как обойти это ограничение.
Рендерите карту без значков, а значки накладывайте у себя на сервере. Но думаю даже это будет считаться гуглом нарушением использованием его сервиса.
Используйте NavMesh для навигации по уровню. Выбираете рандомную точку на уровне и отправляете туда врага. Периодически проверяете близость игрока, чтобы начать его преследовать.
А от нас то вы что хотите. Как вы код написали, так он и работает, не чего лишнего не придумывает и не пропускает. Если он не ищет новую цель, значит вы так криво описали ему задачу.