You could do this a couple of ways:
Texture. Fairly common, you've got a base mesh (1 male, 1 female) that doesn't change, and you just add different texture maps overtop of the UVs. So technically you could have multiple faces on one head. You'd be surprised how much a slight change in skin colour and some thicker eyebrows can do to alter the overall appearance of one character to another.
Swapping models. Build a bunch of interconnecting meshes (arm, leg, torso, head, etc). Make sure everything connects as it should. Rig up a skeleton inside the mesh. Then you can swap a 'head' mesh, etc. and connect it to the skeleton's "head" joint. This one's more resource-intensive, 'cause you not only have to load the new mesh for every character you see on-screen, but also the textures that go with it. May be worth it though, 'cause different topologies (smaller noze, different jawline,etc) will help to make everyone look more unique.
Also take a look at decals. These are little textures that can be overlayed ontop of a base texture. Things like bullet holes on walls, but also cuts, bloodstains, etc. Not as good for a part of the texture that's 'permanent' like a moustache, 'cause it means constant re-drawing of extras. But something to think about.
Hope that helped!
Rixeh