I'm not sure, although maybe I don't understand the implementation specifics here. If the entrance NS is establishing a TCP connection to a listening exit NS, I don't think the exit NS needs to be told the route to the entrance: it will use the incoming NIC and source address for routing. But if you're connecting the other way (exit->entrance), the lack of a route should prevent even establishing a connection.
You're specifying the gateway for the route, not the entire netstack. When a packet is sent via a route, the gateway is the "next hop" node. The gateway's link layer (ethernet usually) addresses are used to send the packet to that next hop.
On a home network each machine usually has a catch-all route that sends all non-local traffic to the router, which is the definition of gateway you're thinking of. In that context the router is the "gateway", and this is represented by the catch-all rule that sends traffic to the router.
It looks like (correct me if I'm wrong) you're sending packets via a channel.Endpoint, which is a wrapper around a Go channel. Since there're only two ends to the channel, the actual gateway address is moot -- everything sent in one end of the interface comes out the other end.