Why must ID be Hashable? I think Equatable is enough for identification. DBs often use trees for indices instead of hash tables. Don't we want to make ID Comparable instead of Hashable in such cases? Even if ID is just Equatable in the standard library, we can make ID Hashable in some module in the following way when we need it.
protocol Identifiable: Swift.Identifiable where ID: Hashable {}
ADDED: Although I have no idea of concrete cases when we do not want ID with Hashable, I think the standard library should be kept minimal. ID with Hashable may be a same way as Java's Object class with the hashCode method.