GoBoxNode just uses 1 GoBoxPort, and it overrides GetFromLinkPoint / GetToLinkPoint and GetFromLinkDir / GetToLinkDir, etc to make the port connect on the side closest to the other end of the link.
To improve the tree layout of single-port nodes such as GoBasicNode and GoIconicNode, the GoLayoutTree.SetPortSpots method sets the values of GoPort.FromSpot and GoPort.ToSpot to force links to come out or go into the ports in certain directions at certain locations, according to the GoLayoutTree.Angle.
I think you want something more like GoTextNode that has 4 explicit ports, one on each edge. You’ll have to write some code to manage where the connections go. Implement CanLinkTo and CanLinkFrom in your port class to only allow 1 connection per port. (See ActivityPort in the Processor Sample)