What’s the largest MD5 hash you can find?
max() takes a key

The main thing I wanted to point out is that max() takes a key, which is a one-argument ordering function. 

This lets you rewrite your string_with_largest_hash as:

def string_with_largest_hash(plain_strings, current_leader):
    strings = chain(plain_strings, (current_leader,))
    return max(strings, key=numeric_md5)


Which is quite a bit shorter, and in my opinion easier to understand.