10 people already is a lot for a team, so roles need to be clearly assigned on a project basis.
I would recommend that you choose a leader for individual projects, you can then kick of the project in a synchronous manner (webcam or chat). From there on you have to use all the tools you have and use the advantages of being a virtual team. So asynchronous work, clearly set milestones and deadlines, once everyone did their work make sure you choose a person who puts it all together.
When finalizing the project it is once again important to meet synchronously, this will stimulate exchange!
Since you are developers also make sure that your workflow is standardized. Use tools such as github or bitbucked to manage code. A shared task management tool I can recommend would be teambox.
A great book I can recommend on virtual teams is:
Cristina B Gibson, S. G. C. (2004). Virtual Teams That Work: Creating Conditions for Virtual Team Effectiveness