Most of the files you'll work with are in \game\libs\class3.1\rts. There are a few in \game\libs\class3.1\contentmanager. You probably won't use any others for quite a while, if ever.
For the heroes there are a couple of things that work together. In characters.xml, they need to be designated as heroes, which is just one trait: <DefaultTrait Trait="Trait.Meta.Hero" />
Ater that, there needs to be an unlock. Those are found in expertise.xml
Start by searching for "<Feat HeroUnlock="110 HERO Eli Wilkerson">"
A few lines down, you'll see a character line with his internal name: <Character ActorFlags="Spawn" ActorName="110 HERO Eli Wilkerson"
A little farther down you'll see a Challenges section. Those are the conditions that have to be met to unlock the character.
<Challenge Event="Kill" Number="100" Params="Item.BluntLight">
They can be very complex, or very simple.
<Challenge Event="OneShot" Number="0" Params="Scenario.Count">
<DescriptionText Flags="" Notes="" Text="Breakdown Level 1." />
<NameText Flags="" Notes="" Text="" />
All that requires is starting a new game.
But, when the challenge is completed the first time it spawns a mission to go get the hero. So, to avoid possible complications, don't make too many show up at the same time or you can run into situations where you won't have one appear because there are too many missions. They will often show up later... but you can still miss them.