Here's something to try, I haven't tested it though. Unless it is absolutely necessary for you to store the location of every enemy for other reasons, this might be a simpler solution.
Pick a random destination, and use Pick Overlapping Point to check if any enemies are located there. Then do a value comparison: if Enemy.PickedCount is equal to zero. If this is true, then the enemy can travel to the destination.
I would not use this in a while loop. When you are ready for an enemy to travel, you could check a for a free destination once each tick, or even check 3-5 times per tick with a for loop.
I just thought of something, if Pick Overlapping Point does not pick any enemies, I don't know if Enemy.PickedCount will equal zero, since maybe you can't reference Enemy without any actually picked. If my first suggestion doesn't work, try this: do not check if Enemy.PickedCount is equal to zero. Create a local variable, (could be called PickedCount if you want). After using Pick Overlapping Point, use a For Each loop for Enemy. In the action, Add 1 to your local variable PickedCount. In a subevent, do a value comparison: if PickedCount is equal to zero.
I hope this helps!