I think the problem is that the variable that holds the timer start time is going out of scope before the time is complete. By putting the definition of timerStart inside loop() you made it a local variable. Every time you go through loop() that local variable gets re-built but the value you set it to the previous time through loop() is not preserved.
To fix that you have to make timerStart a global or static variable. To make it global, move it out of the loop() function. To make it static, change the line to:
static unsigned long timerStart;
Another problem is that you are using ints for your timer intervals. To make them compatible with millis() and timerStart they should be declared as unsigned long, like this:
const unsigned long MotorTime = 1500; //defines the time the Motor is on
const unsigned long Dwell = 500; //defines the time until motor changes