Generate fair, score-balanced teams from a player roster — with optional constraints and previous-team avoidance.