Control 16 motors with 8 relays
After several iterations (which can be seen in edit history), I think this arrangement is optimal for practical reasons: it requires the smallest number of separate relays to drive (7 relays), and they can all be of the same commonly available type DPDT.
To enable a motor, K1 and K2 are used to select the correct column. Then K3-K6 are used to select the row. The lower end of all other motors on active column gets disconnected, ensuring that no current flows through them. Finally, K7 can be used to reverse direction.



simulate this circuit &ndash; Schematic created using CircuitLab