Starsector's reputation system is a strong foundation, but it has shown it has trouble accurately describing some important relationships. Take the conflict between the Hegemony and Tri-Tachyon - in-game they are openly at war, but all the lore says otherwise. The "monolithic" pirates and independents are another example where the system fails. What the game needs is a little more nuance, and I think NPCs can be tweaked to provide just the right amount.
I suggest dividing NPC design into 3 categories: minion, minor, and major.
Minions are one-off characters such as patrol commanders. They appear, do something, and disappear forever. They are defined by their faction, though sometimes their stances towards certain things are influenced by a major NPC. In a way, they exist to characterize their faction like its flag and description do. Therefore, they should have a very limited selection of portraits (excluding pirates, independents, etc.). For names, I think they should be limited to rank and last name, or a nickname. Finally, minions don't need the full reputation bar - they are either Hostile, Neutral, or Friendly. If they command something, then that's its stance too.
As an aside, I think it would help readability if name, rank, and occupation were compressed into one line - "[Rank] [Name], [Occupation]". It also makes the UI short enough for two NPCs in a conversation at once, if that's worth implementing.
Minor NPCs fill the recurring roles not taken by major NPCs. Otherwise they are more or less like minions.
Major NPCs are the primary element of this suggestion. When something happens in the Sector, odds are a major NPC is involved. The Hegemony doesn't simply besiege a planet -
Space Marshal Baikul Daud orders the planet besieged. Given major NPCs' importance in their faction, I think the natural place for their intel is on the factions screen:
A faction's major NPCs would only be shown when the faction is selected (or one of the NPCs, of course). An NPC's information should at least include their full name and title (e.g. "Diktat Executor Philip Andrada"), their full-size portrait, the player's reputation with them, a description/history/summary, and any personal allies or enemies they have. It is these personal allies and enemies that provide the nuance we desire.
Take the TT-Heg hostilities. Say they are Suspicious with each other instead of Hostile. Say Space Marshal Daud has fleets (with a distinguishing prefix) that are influenced by his relations. Say Daud is enemies with a TT NPC that also has loyal fleets (perhaps Kader from Forlorn Hope, who probably escaped disgrace and has climbed the ranks despite being part of the "head-on attack" crowd). Does it not make sense those two sets of fleets would attack each other?
There you go, overall peace despite frequent skirmishes. Nuance achieved.
A couple other factions' nuances:
Spoiler
The Sindrian Diktat is an interesting faction: ostensibly under Andrada's total control, but of course that can't be completely true. Letting the Lions Guard be influenced by Andrada's personal opinions presents the sway between the faction and Andrada. You could be hostile with the Sindrian Diktat, but if you have high rep with Andrada then the Lions Guard would be Neutral towards you. Anger Andrada and the Lions Guard would attack even if you were Neutral with the Diktat as a whole.
I like Alex's fixed pirate rep idea; a big "HOSTILE" in place of the usual faction's reputation bar would be fun. Warlords and other crime boss major NPCs would allow some pirates to be part of subfactions the player could make peace with (for a time at least). It might also make it possible for pirates to fight each other without it being incomprehensible ("X Gang Raider" vs "Y Gang Raider" instead of two "Pirate Raiders").