There are two issues in using a public key hash:
1. What hash algorithm to use?
2. What exactly should we hash?
Rather than responding to the details you included, let me step back a
bit and make an observation.
Assuming for the purposes of this discussion we have a choice to make, I
believe the choices on the table are as follows.
1. allow an arbitary key selector in combination with a name form
Let me observe that all users already have at least one name form,
specifically an email address. Thus, the minimal additional work is
to choose a "unique" value, which can be easily done once by an
implementation and hidden from the user. Further, implementations
simply treat the value as opaque and use it as supplied; no
additional processing is necessary.
2. specify the hash of a particular value to be used as a key selector
This would require implementations to support a hash algorithm and to
implement a unique and unambiguous encoding of the data to be hashed.
These are two additional points of failure during interoperability
and two additional "features" for an implementor to get wrong.
Seems to me the simplest solution speaks for itself.
Jim