Thank you Rohit.
I see that if arrowheads are not needed, then
EdgeShapeFunction -> {Line[#1] &}
is very good. It also appears that
GraphLayout -> {"EdgeLayout" -> "StraightLine"}
was quickly implemented with
EdgeShapeFunction -> {Line[{First[#1], Last[#1]}] &}
instead of the arduous task of accounting for separate edges.
So I also decided to punt on the whole matter, and instead use VertexCoordinates
to adjust the placement of my 14 vertices among the 47 bezier edges.