How many active walkers do you have on one layout ?
You are firing 2 foreach loops for them every 0.05 seconds.
you could start by adding 2 sub events to the first for each loop, and move the distance check to the first sub. In the second sub add an else and add the actions from the second loop.
This way you can delete one of the foreach loops with its checks, which should now get handled by the first loop "else" statement.
condition: for each
sub 1: distance check
sub 2: else