i picked the sally out tactic and it worked perfectly. halberdiers proved to be a bad choice because they don't use shields. priests are a poor choice because they don't kill, they just KO. cavaliers also have a high KO percentage. paladins were perfect for the job - they have shields and cutting weapons and they do their job pretty quick. i brought reyvadin down from +1100 to 350 (0 ivory sentinels and 40 knyazs) and then i used infantry + archers tactic. a line of infantry held ground in front of the archers. the archers took out the archers on the wall and then the infantry charged. in the end i lost 150-200 troops. that's not much considering they took out a +1100 garrison that included ~460 elite archers.
sadly, reyvadin was given to someone else, together with 200 of my elite units inside it
earlier in the game i took literally half of the map for swadia and i only hold a town and a castle. i have a lot of renown, 30 relation with the queen and no controversy. i didn't even get the option to keep dhirim and renounce my oath to swadia. after reyvadin i took another castle (before reyvadin was given), that may have caused the game to assign reyvadin to someone else