It could be done a few ways.
Instead of using a quad the mesh shape of the node could be dynamically generated.
Another option would be the dynamic generation of a mask image. And there could be a few ways of doing that some more efficient.
It could open up the door for more node shapes. As in allowing user shapes / dynamic node shape the same as collision shapes.
pick_node could still be made smart enough to find inside of the shape in both ways.
There must be a will to make all of this and probably it would be low priority since doing it with images the current way is pretty good.
And down the road we’ll have vector shapes to use in GUI potentially!