I have been always convinced of the criticality of recruiting for a team to be successful. If you don't hire the best and the brightest, you are wasting everyone's time. Recently, I stumbled upon a blog post with that very same title.
You may think (as I did until not a so-long time ago) that the solution to this problem is just putting the barrier very high. However, there is trade-off between getting the people you need, and putting the barrier too high. You might be hiring the truly best and brightest, but if they are just a few of people, or you take too long to hire, then you are not solving the problem.
The solution? Open your focus, and hire globally, but you don't have to relocate people, just let them work from their places. This is of course like discovering the Mediterranean Sea, many open source projects are working in globally distributed teams.
However, making a remote team work like a team is not straightforward. You have to setup the proper environment to allow the team to work, regardless of where is everyone located.
The post contains a thorough piece of advice on how to achieve this; I have particularly liked the following ones:
Many of these suggestions can probably be useful too for teams that work in the same physical location.
Some of this advice can be easily implemented in a team using tools such as a wiki (e.g. Mediawiki) and project management software (e.g. Redmine). Of course the crucial issue is not having these tools installed, but fostering that everyone share the vision on how to organize the team, how to report activities, the importance of sharing information, etc. In short words, fostering this culture of work.