The major-minor key concept does not seem to help your scenario.
The major key will determine which shard gets the key-value pair.
A minor key will just make sure things associated with the same major key are kept in that same shard and can therefore be used not only for single value lookups, but also efficient grouped transactional operations and range type of queries.
So, you need to model it.
It is quite common to denormalize data within a key-value store. I guess the question is whether or not you are going to change the user data set or it is fairly static.
If it is static, seems that each of your alias's are going to be unique, so you can just use them as multiple keys pointing to a denormalized value set i.e. each unique key gets the same value, it takes a little extra disk space, but will provide best latency look up.
If you expect the data set to change a lot, it becomes a pain to update the denormalized value under all keys, so you may want to have that 1 level of indirection, your alias to key map.