historically, how it worked, was that the attacker would cut off the enemy city and start sieging it with waves of attacks.
IMO, the game should be like this: attacker can keep attacking, when he retreats/time runs out, he loses a small % of his army, no more than 10% preferably 5%, and defender gets gear loot.
Defender can't reinforce, attacker can. What that means is that defenders, like historically, would be forced to bring over reinforcements to try to break through the siege or even rout the enemy. See battle of Vienna, for example.
That way, defending is still advantageous (battle time still on your favor, you get gear, fortifications) but attacking is perfectly feasible and becomes more about tactics and less about battling time with, in the overall scheme of things, time being on your hand, ergo, exactly as it was historically.
The one restriction I would put is that the attacker, to be able to siege a city, would have to have equal or more amount of troops (not population) than the defending city as to avoid 50 troops locking down cities for days on end.
I really can't see how this can be exploited. Attackers could lock down cities until help would come, like they did historically, defenders would have home advantage, like they did historically, but a city left to its fate would eventually fall.....like they did historically.