Migration is definetly a thing to add. Cause: bad health, unpleasant (so you could let unpleasant heads add voluntarilly in order to provoke a migration, see below), backwarded, poor(so the amount of gold would have its importance), etc...
You could set up your frontiers, by civics maybe, to let foreigners enter your country or not.
There would be ethnicity back, and assimilation.
Assimilation: if you have a strong culture, it could assimilate foreign citizens to your culture/ethnicity in their own cities.
So now the production and commerce of cities would be separated by ethnicity. Example: if you have 10 roman people in your city, and 6 phoenician people, the roman civ will have 10 people to work for them in this city, and the phoenician empire 6 people to work for them in this city. But let's say the city is roman, then it would remain roman. Phoenician people could build buildings in this roman city, maybe to encourage phoenician assimilation in this roman city. But they could also build units, reapatriated in the phoenician civ borders when completed. (unless it is possible to all units to go through any foreign territory, which i think would be better, like in Civ2)
So if you take a border city of your empire, you may have an honest amount of citizens working for you, because of proximity and mixing of ethnicities; but if you take a far away city, with probably a different mix of ethnicity, say arab and ottoman, you would have only 1 citizen working for you inside this city, even if you take it by force.
You could then choose to exterminate all those foreign people, with a hit in diplomacy, or start to convert the people into roman people. The appartenance of a city to a civilization will be the strongest factor to assimilation. So with time, if the city is yours, foreign people will start to convert into Romans. You could also build buildings fovorizing greatly the assimilation, like UBs.
Also, you could choose forced immigration: all foreign people of the taken far away city goes in your core cities, being faster to assimilate, when some people (roman) of your core cities goes in the new conquered city. (or not) It seems easier and wiser to use this option, but it stands for 1 city only, it would be more complicated with several cities conquered, your core cities losing production and commerce slowly. (for example if you conquer 6 ennemy cities and choose forced immigration each time, your core cities may end up with 6 citizen each working for the enemy.)
I don't know if i'm clear, but this kind of thing could IMO justify the presence of immigration in the game, in the same way it would make culture more important, and buildings also more important.