I'm going to make one more change as well:
if (myPos.Distance(kvp.Value) > 15)
will now be:
if (myPos.Distance(kvp.Value) > 50)
The idea was to not check the position too far away, since mobs move, and you don't want to check the position while being outside a good sync radius. However, 15 is too small, because movement in this game is not precise, so around objects like shrines, it's possible the point to get in range of, can't be moved to, and as a result the bot will stop. Making the range a lot larger should avoid that issue, but still not have the undesired side effect of removing the location from eliminating the position from being too far away.