If I remember correctly, the reason we didn't do this before was because we would need to swap out the HTTP muxer or write a custom one in order to handle it. Basically the URL gets completely decoded before looking up the route, which makes it impossible to detect with the default serve mux in Go. This could have changed since, but I'd have to check.
Another option here that we have used before is to checksum the key name and store by that. So for example, when you store a key for "user/org", you instead store the key as md5("user/org"), then do the same hashing whenever you need to look it up again. This only provides a one-way lookup (can't really reverse it to the original value), but if you needed to you could store the original name in the key's data. Just throwing that out there in case it helps.