A better approach would be to have distributed teams where the teams are cohesive unit with co-located members. Each team has local autonomy and a central mandate. The teams could be located anywhere but the team members would be in the same office.
Aliging distributed teams is easier as they can agree on coarse details , have few or limited dependencies and they execute on their own. Otherwise you are just shepherding cats.