I was thinking about making the train controller listen on all possible inputs and deciding which to use at runtime based on the unique control signal...
I've found that you CAN actually have multiple poles with the same name & ID, they have their signals mirrored (for input) or stacked (for output). This may be useful in designs like this.