The current siege battle system has imo mainly two problems:
1. The biggest problem is that battles play out the same very often, same garrison, same procedure
2. Another problem is that, although this has become more difficult, it is still incentivised to game the system in immersion-breaking ways: When you are attacking, you are incentivised to pull your units where the towers cannot reach you, so for the player, only one tower effectively exists which he can either destroy or rush to the walls under its fire. When you are defending, the fact that the AI is trying to use the battering ram is highly abusable. (There are more exploits, but these are imo the ones that you cannot avoid noticing.)
I propose the following changes:
-While sieging a settlement on the campaign map, you can "zoom in" on it and choose a part of the settlement's walls to attack. This will determine what form the wall will have in the actual assault. During the siege time on the campaign map, you can also choose wall segments and towers as targets for your arty (if you have any in your army). The chosen wall segments/towers will sustain damage per turn (maybe 50%) and will be damaged/destroyed in the eventual assault.
-What kinds of units are in a garrison is affected by what kinds of military buildings you have in a settlement. These will not be additional units but instead weaker units of preferably the same type will be substituted for them.
-Towers will have a very slow turnrate for their cone-shaped targeting area so that up to half of the towers can, given enough time, target an area which on one edge of the map and has a distance to the walls equal to the range of long range arty.