Off the top of my head:
Have you thought about putting flanneld on the machines hosting the non-K8s services? Probably impractical, but it's something to consider.
The other is to treat the services inside the cluster as if it is in a different datacenter and explicitly expose nodeports that the other services need. If you're using HTTP as the transport, maybe use an http proxy running inside the cluster and proxying them to the services within the cluster. That's how I did it with getting AWS ELB to talk to the services within the cluster I set up.