Here's what you could do it like:
Scatter nodes across your map and run a constant schedule.
In that schedule, do something like the following:
if angel.nobody_looking
path = find path over nodes from angel location to a chosen target with a travel distance limited based on time since angel.nobody_looking_start
if some players can see angel
teleport angel to last point in path
angel.nobody_looking = false
angel.nobody_looking_start = 0
otherwise, if path reached target
teleport angel right behind target
kill target or teleport target to proper "timeless" location
otherwise, if no players can see angel
angel.nobody_looking = true
angel.nobody_looking_start = current elapsed game time in seconds
EDIT: This would cause a quick noticeable teleport effect right after you turn. Instead, every time the latest node you can get to changes, teleport it to that node. And to make it even better, start the path from there instead too. Although, for the best performance, you should just compute the path once when everybody starts to look away.