@Ben to comment to your "I could add snapping of guides (conceptually any infinite line) to curves in an object, BUT that snap could potentially have many potential targets."
I don't think this should be the case, and n need to have many targets. What you can use is the same algorhytm that now snaps to the points when we work in Node mode, or create a new object (ie. rectangle). The program doesn't need to check against all geometry, even if a guide is an infinite line: just check the points close to cursor. AD snapping still requires a lot of workarounds. For example, if I want to snap a guide to an intersection of lines that belong to different objects, I can't do it. But what I CAN do is create a rectangle with a starting corner on that intersection, as AD is recognize it. So every time I need to do some snapping like that, I am creating rectangles that I will use as snap targets. I don't see why the same algorhythm that picks snapping targets when creating a rectangle can't be used to drag guide and snap it to the same intersection point.