I think variable cooldown would be a strong incentive to upgrade your town.
Also need a cooldown on being declared war against, otherwise you may get 2 or 3 larger towns picking on a smaller town constantly - and we know it could easily happen.
The lower the tier the less often a town can be declared against - as it has a larger impact on them. A high tier town could be declared against every day or two.
Could there be a way for each town to set their own war time ? So that if town A says the bulk of us are online at 8pm each night so our war time is 8pm... if you declare war on them, you need to attack in their peak times... This would stop the overnight war declaration where you wake up the next day to a "sorry you lost the war and your bank is now empty" and actually provide PVP which people say they want.
That way if Town B declares War on Town B there is at least a 24 hour timer before the war starts. So if Town B declares war on Town A at noon. The next evening at 8pm the war starts. This will hopefully give both sides time to rally forces and provide PvP entertainment for both sides.