How do I get Siri to ignore a particular contact that shares someone else's name?

Try giving the contact a nickname (Add Field > Nickname) in your Contacts, and then use that nickname when ordering Siri to text that person. Alternatively, put a character in front of old John's name so Siri never gets confused (e.g., xJohn or oldJohn or #John).