This sort of thing is much easier to understand if you think of languages as living, changing organisms rather than as static constructs. They actually change rather quickly, from generation to generation. Large human migrations tend to homogenize in the sense that they result in a single dialect propagating over a large land mass. But then they continue to diverge regionally over time in rather random ways, to the point where every city in a given country, or even every neighborhood in every city in the country, will develop its own distinct dialect. London is a good example--it's a city that's been inhabited mostly by the same ethnic group for many centuries, and their language tree has branched to the point where people of different districts and social classes there use very different-sounding pronunciation.