How about this to limit city spam: the level and size a city can reach is dependent on the size of its hinterlands.
If you have a bunch of cities crowded together, the highest they can reach is, say, level 2, before the supporting hinterlands are exhausted. If you space cities apart some they can grow to level 5, the rationale being that it takes the production of a large area of hinterlands to support a large city, which is how it works IRL.
With this, the player should have the option to limit city level. Even with a bunch of cities spammed togather in a small area, if all of them are optionally kept to level 1, except for one, that one remaining city should still be able to grow to a good, high level.
If you have a level 5 city every few squares, that runs contrary to common sense and may be the sources of the problem here.
Mechanistically it would go something like this: when the city is ready to grow a level, it would require a baseline number of contiguous (diagonals okay) unoccupied tiles surrounding it, within the zone of influence. It would then "own" those tiles as its hinterlands and other cities could not make use of them. If it has the requisite number of tiles, it would be allowed to level up. I'd say level 0 outposts wouldn't require anything, level 1 maybe 2-3 unoccupied tiles, growing exponentially to level 5.
I dont totally agree with you on this. I live in Canada, pop around 34 M. If you go to Japan, Tokyo and their suburb, it's 34M people... I dont know if you know this, but Tokyo and around tokyo is pretty small compare to a country. If you take France, it's around 50M people and France enter 19 time in Canada. Don't forget that IRL, we can build upward too. Take Hongkong for instance, it's not uncommon to see some 60 story building.