How do I get rid of duplication

Using the suggestion in reply #12 to have an array of servo driver board objects, you can easily add a field to the turnoutData structure to specify which driver board to use. That will allow you to use as many driver boards as you want while using a single turnArray.
< edit > I see from another reply that you don't even need the extra field if you list the servos in the correct order in turnArray.

Is relayState1 always the opposite of relayState2 for a particular servo? If so, storing both is a waste of memory.