OK, so I’m glad you understand that when you implement virtualization, some Nodes do not exist, and the AvoidsNodes routing of Links cannot avoid Nodes about which it cannot know.
Unfortunately the AvoidsNodes routing algorithm is not very customizable. You can easily pretend that a Node has a different size than it actual does by setting/binding Node.AvoidableMargin, or you can control whether the Node should be avoided at all by setting/binding Node.Avoidable, but that doesn’t help when the Node does not exist.
The best that I can think of, off hand, is that you could ask Links that are in the area where new Nodes “appear” to recompute their routes. One way of doing that would be to find Links that intersect the area, and if their Link.Route.Routing is AvoidsNodes, call Link.Route.InvalidateRoute() on them. So, given a Rect region in model coordinates:
foreach (Link l in myDiagram.Panel.FindPartsIn<Link>(region, SearchFlags.Links, SearchInclusion.Intersects, SearchLayers.Links)) {
if (l.Route.Routing == LinkRouting.AvoidsNodes) l.Route.InvalidateRoute();
}