Tim's suggestion was more along the lines of what I was thinking.
I agree with your first point, but not your second.
I agree that, if you're dropping a file on to a page where the file* already exists, you'd want to check the file name and offer to either update the existing file or create a new copy.
However, I definitely think that detecting a duplicate upload based in the hash on a page where the file doesn't already exist has a usability advantage, as it gives you the opportunity to create a single point of update using aliases if desired. In my experience, this is the way our users (particularly the less technical ones) tend to expect things to work.
* I'm thinking of what our users understand as a file, i.e. an instance of the File module containing an uploaded file.