I get it that centralized cannot scale, but what if the ESB is actually built on top of Azure, leveraging all that Azure Service Bus has to offer. Leveraging the Message class, messages of any contract could be routed anywhere, as well as inspected. It would then also be able to scale up and out as needed. With some creativity in the Message headers (which I recall you have leveraged in the past), a messaging route strategy could clearly be implemented.
Going the other way, and only having Gateways, the subscriber is coupled to the publisher. Would it not be better if the subscriber (endpoint that need data) would publish their requirement (on a true bus), and the publisher (who has the data) listen for those "events" on the same bus and simply responds? Would this not move us to push data services, and do more in stream (StreamInsight/RX-hot observable) implementations on both ends?