There is a characterization of overlays as an abstraction as defined in computer science. An abstraction can be compiled down to the physical sometimes using an intermediate format. (like objects to byte code). Overlays are not abstraction, they are mark-ups and create a new layer for processing. Mark-up are hints to higher layer software on how to process the content. There are services that these overlays need from the underlay and the exchange points are implemented in gateways.
Lot of complexity is being built into overlay networking because the design center of overlay networking is the hypervisor. By making hypervisor as a key node in the federated controller architecture, we are leaving out alternate mechanisms that enforce tenant/workload isolation like lpars/containers etc. which don't need or require hypervisors.