Running 4 step motor at different speed at the same time

As far as I know stepper motors can't go nearly as fast as 2000 rpm - perhaps not even 1000.

There should be no problem controlling DC motors but if you want careful speed control you will need some form of speed measurement that will use extra pins on the Arduino.

Any motor will need a driver board between it and the Arduino and it is the connections to the driver board that determine how many Arduino pins are needed.

If you look (for example) at the Pololu and Sparkfun websites you should get a good idea of the sorts of driver board that are available. Plane what is needed for one motor and then multiply it up for several motors.

An Arduino Mega might be an option if the Uno hasn't enough I/O pins.

...R