Champions share XP with each other, i.e having two in a party grants them only halve the XP. Regular units get halve of the XP the champion would get. XP increasing traits stack with each other. If they are from different sources (e.x., two champions with Trainer), they also stack. Bonus XP gets applied after the XP has been split. Using your example the XP calculation would look like this:
Sovereign: 5 base XP * 1.85 (1 +0.25(General) +0.25 (Knowledge) +0.25(Trainer II) +0.10(Trainer I)) = 9.25XP
The champion gets the same amount as the sovereign in this case
The units: 2.5 base XP * 1.60 (1 +.25(General) +0.25(Trainer II) +0.10(Trainer I)) = 4XP
I don't know how rounding works in the game, but, assuming it rounds down at the end of the calculation, your sovereign and the champion would get 9XP each, while the spiders and the demon get 4XP.