Perhaps what we need is a sort of metric:
Some function assigns a value for the distance between two robots' DNA. Distance functions only have to fulfill the following:
distance of A to B is distance of B to A
distance from A to A is 0
distane from A to C is <= distance from A to B + distance from B to C
So it doesn't have to really do anything at all with how we normally think of distance. It's just a measure of the difference between two DNAs.
Then users set that they only want to download bots that are within a certain "distance" from some start bot, that is, within the "neighborhood" of some start bot.
The smaller the neighborhood, the less you're allowing dramatically different bots into your simulation, but the less likely you are to get some incredibly amazing bot who's DNA is dramatically different from its ancestor.
Perhaps the neighborhood applies to the most populous bot in your simulation. Or maybe it applies to the mean of the bots' DNA's. Then you're just excluding incredibly unlikely major "jumps" in a bot's DNA.
I'd just have to think of how to construct such a metric. Preferably it'd have the distance between two DNAs be very little when, say, the DNA of one is just rearranged compared to the distance of the other.