Rather than having IPv4- and IPv6-specific block structures, I'm leaning towards a single block structure from which to infer various domain-specific properties.
Thought: another way to map a network graph onto an address space is with a kind of quadtree compression, and the resulting "pixels" are the largest which contain a single point, resulting in a kind of least upper bound.
As it stands, this notion requires a god's-eye view of the whole graph, but perhaps this can be readily distributed.
func prefixLessThan(o1, m1, o2, m2 byte) bool {
f1 := int(o1&m1) - int((o1^byte(255))&m1)
f2 := int(o2&m2) - int((o2^byte(255))&m2)
return f1 < f2 && o1 != o2&m1 || m1 > m2
}