I'm seeing lots of applications using hashes as surrogate keys instead of plain integers. I can't see any good reason for this kind of design.
Given most UUID implementations are just hashed timestamps, why so many database designers choose them for application-wide surrogate keys?
If the data backend for an application is made out of multiple distributed databases, using incremented integer ids might lead to duplicated values. UUIDs are guaranteed to be unique not only inside the application but outside it as well (which might be helpful when joining with external data).
It is true that using different id seeds for the different databases in the system would solve the uniqueness problem for integers, but managing such an approach would be more difficult.