Well, after digging through quite a few class' source code it appears that the .upl files need to have one key entry for each bot description line in order to even be considered for use: BotUse=X where X can be anywhere from 0-255, it is used as a 'weight' with the higher value increasing the likelihood that the character will be selected as an overall percentage of available characters (see the various .upl entries). The value really needs to be greater than zero for the Character entry to be used by a bot at all, see the function 'GetRandomPlayer' in the classes xDMRoster or xTeamRoster (both in the XGame package source code).
Some key classes and functions to look at to follow how the random bots are assigned:
1. DeathMatch-> 'InitGame' -parses the game string options to figure out whether to use player created bot rosters, bots versus players, numbered amount of bots, or "random" bots to match the map's recommended player load (initial variables are set here)
2. DeathMatch-> 'PostBeginPlay' - sets off a function call chain which spawns the TeamInfo class, which then adds/selects the random character entries and adds them to an array.
3. DeathMatch-> 'StartMatch' -actually calls the function to spawn new bots (addBot)
4. DeathMatch-> 'SpawnBot' -causes the TeamInfo actor to either spawn a named bot, or get the 'next bot name on its list' and spawn it (from the array that was filled with entries earlier).
5. UnrealTeamInfo/xTeamRoster/xDMRoster-> all of the functions specify how to add bots properly.
[EDIT] Now that I look at the PostBeginPlay functions in both xDMRoster and xTeamRoster a bit more closely it looks as though they should always load up the exact same list of bots if using map defaults, *except* when more bots are added above and beyond the base amount.
Here is what you might want to try: create bot rosters with only one or two bots that you will always play with and use those rosters. Once the match has started, use the "addbots" console command and I *think* it should choose the remaining bots more randomly...