Motors that do the same number of steps per revolution will be interchangeable. And there should be an easy ability with most code to allow for different step angles.
The higher voltage is only needed to maintain torque at higher speeds. It forces the current to get to its maximum quicker.
The easydriver should be fine with that power supply. Excess amps are just ignored - better to have too many than too few.
I haven't studied your code carefully. I am not familiar with the stepper library or with driving via a motor shield. I think if you comment out all the lines to do with moving whole revolutions (lines 23-38) the single steps will work. If so I leave it as an exercise to figure out why.
For a working system (as opposed to a quick and dirty demo) you will need to get rid of the delay() function calls and replace them with the technique in the Blink Without Delay example sketch.
When you post code please use the code button (with the # symbol) so it looks like this.
I have written a more extensive demo of that technique in this Thread (in the first post).
The aim should be that every iteration of loop() your code tests to see if it is time to cause a motor to step, and if so, cause it to make one step. It gets a little more complicated if you want to coordinate the movement of 2 or more motors to (say) cause a tool tip to follow a diagonal.
...R