Because it was so common for centuries. It couldn't be generic if it weren't old, which is not to say that all old names are generic. It's a combination of overuse and that overuse being spread over a very long time. I also think that
John is generic.
Of course, this is just my opinion.