Normalize use of eval

A lot of this code would call methods and whatnot before accessing $@,
which is a logic error, it also conflated returning false from a method
with dying.
Redis::Hash: Better error message when returning odd number of hgetall() elements

I can't reproduce this now but at an outage at work I started getting
"Odd number of elements in hash assignment at
[...]/lib/ShardedKV/Storage/Redis/Hash.pm line 20". This likely had
something to do with a stale persistent connection to Redis instance
from a long-living uWSGI, because it only happened on a subset of the
machines talking to Redis, and went away when uWSGI restarted.

In any case made this code a bit more defensive so if it happens again
then we'll have better error reporting, likely this was just
returning (undef) or something like that.

This happned against Redis.pm version 1.967, the latest current CPAN
release.