We used to have two Cruise Control.net servers running about 20 or so builds between them. We've stared moving them all over to a single virtualised TeamCity server, and we're busy adding more (virtual) build agents to reduce build times and reduce queued builds.
I really like the simplicity and user interface of TeamCity. It's easily paid for the licence costs in the time we've saved configuring it. It also allows for easy scaling up of builds over different agents and feeding the output of one build into the input of other builds.
We did look at Hudson and Cruse but it's very difficult to work out which is best from reading brochures and playing with simple test builds.