1) Don't just hire local talent, hire nationally, even globally. There are lots of successfully companies embracing working remotely.
2) Evaluate the value of a person's contribution based on how much they have done rather than how much time they showed up (what's done >> what to do). Some effective way to measure so is to track Github commits to see how many bugs they fix, etc.
3) When hiring, hire by audit. Pay the interviewees some hourly rate to finish a mini-project that is a part of your company's real work (e.g. add a feature), and let their performance in the mini-test be a large factor in deciding hire/no-hire decision. Also, try to hire from your tech community.
4) Effective communications for remote work: real-time chat, video chat, online bulletin board, weekly team status report.
5) Some big drawbacks of remote work are: brainstorming is hard + mentorship is hard. Luckily, some of the companies don't need brainstorming much. And for mentorship, don't hire people that need extensive mentoring.