Your source code is your name. Having an additional name would be irrelevant. It is certainly possible for bots to prove they cooperate with a given bot, by looking at that particular bot’s source. It would, as you say, be much harder for a bot to prove it cooperates with every bot equivalent to a given bot (in the sense of making the same cooperate/defect decisions vs. every opponent).
Rice’s theorem may not be as much of an obstruction as you seem to indicate. For example, Rice’s theorem doesn’t prohibit a bot which proves that it defects against all defectbots, and cooperates with all cooperatebots. Indeed, you can construct an example of such a bot. (Rice’s theorem would, however, prevent constructing a bot which cooperates with cooperatebots and defects against everyone else.)
Your source code is your name. Having an additional name would be irrelevant. It is certainly possible for bots to prove they cooperate with a given bot, by looking at that particular bot’s source. It would, as you say, be much harder for a bot to prove it cooperates with every bot equivalent to a given bot (in the sense of making the same cooperate/defect decisions vs. every opponent).
Rice’s theorem may not be as much of an obstruction as you seem to indicate. For example, Rice’s theorem doesn’t prohibit a bot which proves that it defects against all defectbots, and cooperates with all cooperatebots. Indeed, you can construct an example of such a bot. (Rice’s theorem would, however, prevent constructing a bot which cooperates with cooperatebots and defects against everyone else.)