For an entirely electronic design, consider using an h-bridge to drive your motor. The h-bridge's control signals are then driving by a microcontroller. The microcontroller monitors the rotation of the motor via an optical pickup, hall effect sensor, tach winding, etc. Your software can have an additional switch to "override" and control the motor direction. I have not thought about it, but you can probably come up with some arrangement of relays and switches to accomplish the same thing. I'd use method A.