Improve jsonb_hash_ops hashing quality

The previous coding would not give distinct hash values (which are used
as GIN keys) to the "a" and "b" string scalar Jsonb values in these two
queries:

SELECT ... @> '["a", "b"]'::jsonb;

SELECT ... @> '{"z":[["a", "b"]]}'::jsonb;

Even though the same two strings would have distinct hash values (with
the "z" key mixed in) here:

SELECT ... @> '{"z":["a", "b"]}'::jsonb;

I believe this may be a regression that I'm responsible for, but in any
case the hashing of keyelemens and values seems sane in all scenarios
now, and the rationale for how things work is clearer.