No, there is no way to set up heterogenous networking using flannel in the way you’re drescribing. Each node advertises an address that other nodes should connect to, that is either the internal or external address depending on which is prioritized and whether or not the node has an external IP. What you’re asking for would require some sort of topology awareness, where each node knows whether or not it has a shared network with each other node and should connect over a public or private address - and flannel doesn’t do that.