I always recommend the controllers put out by Pololu:http://www.pololu.com/catalog/category/12
For an 18-servo setup, you'd probably want this one:http://www.pololu.com/catalog/product/1354
They sell it as an "unassembled" kit as well, if you want it a bit cheaper (or don't need the "plug-n-play" convenience).
You basically hook it up to the Arduino via a couple of digital pins, which are controlled by the software serial library; you then communicate with it using serial commands (which are well detailed).
The advantage of using a standalone controller is that you can send the commands to move the servos where they need to go, and after sending the commands, your Arduino can then perform other processing; I know that depending on the complexity of the code and the number of servos being controlled at one time can cause the servos to "twitch" because the timing pulses don't stay within the correct range.
Also - this leaves a ton of pins open to do other things with; you can also daisy-chain more Pololu servo controllers off the first one, and address the new servos in the same manner as the first (all the servos are addressable) - that way it is easy in the future to add, say (for instance), a controlled arm, or maybe a pan/tilt for a camera or some kind of IR or ultrasonic sensor - you get the idea.
The Pololu command structure is fairly easy to deal with; there's examples out there for the Arduino that detail how to set up the interface and use it. You would want to abstract this out to come up with something similar to the Servo library, if you wanted to make it easier to work with (or transferrable to other methods of servo control), but that's basic stuff.
Hope this helps!