Indeed, with differentiation I do not mean enforcing specialization; hard bonus attacks are ugly and ought to be avoided. With differentiation and more unit types I simply mean units with different values; e.g. Rome ought to be able to train both hastati and principes, the latter of which has higher resistance and metal costs (chain mail), but is otherwise identical; likewise, Macedon ought to have Macedonian (lancers), Thessalian (spearmen), Paeonian (javelineers with shields), and Odrysian (javelineers without shields) cavalry; they all have different statistics, yet perform the same function.
Currently all soldiers have the same costs and training time (infantry 50 food, 50 other resources, 10 seconds; cavalry 100 food, 50 other resources, 15 seconds), despite very high differences in damage per second: javelineers 12.8, swordsmen 7.3, spearmen 5.5, pikemen only 2. Add to that a 20% cost and time reduction of Celtic structures and it is no wonder people want to play Britons and not Macedonians.
To facilitate a systematic approach it is important to start from a clean and consistent situation; that's what my patches have mostly focussed on. (Getting people to review, accept, and commit them is the hard part.)
Another simple idea is keeping units trained at the civic centre of basic rank, while increasing those from the barracks to advanced rank.
In my opinion Age of Empires II is a great example of what 0 A.D. shouldn't do.
What would already be a great first step is if the formations already present in 0 A.D. would give minor bonuses; e.g. a square or line would increase resistance by one level, while a compact syntagma or testudo adds two levels, but reduces movement speed.
Doubling the training time of ranged troops and twice the population for cavalry would already go a long way towards more realistic ratios.