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 – Schematic created using CircuitLab
You could do it with 8 + 4 + 2 + 1 SPDT relays + 2 SPDT for direction/on-off, a total of 17 relays, but it would be simpler with 16 SPST and 2 SPDT for a total of 18 relays, or 16 SPST + 1 DPDT = 17 relays.
Also possible with 4 + 2 + 1 DPDT + 3 SPDT = 10 relays.
If not for the need to run the motors in reverse, it would have been simple to use 8 SPST relays and 16 diodes to carry out the task.
Four 5PST, four SPST and one DPST relay would be required to satify the reversing requirement.