Reading motor limit switches with Arduino
Using limit switches with DPDT contacts would be one more way to meet your requirement of having hardwired limit switches with status feed back to the controller.
Another alternative would be to wire the limit switches to the controller inputs and have only software control.