I think it would be enlightning for all if “you” (the Event Store team) shed some light on the subject of idempotency(*), (optimistic) concurrency (detection), command de-duplication (when used in message-flavored cqrs+es), and what behavior client code can expect in the realm of these subjects. A blog post or documentation seems more appropriate than a response in a forum.
Kudos for pulling this off. Your codebase is a feast for my brain.
One thing you have to be careful of here is what you include in the hash producing the guid - including things like DateTime.Now will likely not lead to the results you expect if using for idempotent commands!