Clean up null checking
From the discussion in https://github.com/pandas-dev/pandas/pull/31939 it was pointed out that there are places where we check for nullness in an unnecessarily verbose way, e.g.: https://github.com/pandas-dev/pandas/blob/master/pandas/_libs/hashtable_class_helper.pxi.in#L1036.

Ideally we should just be able to use `checknull` from `pandas/_libs/missing.pyx`, but would need to make sure this catches all cases, such as `decimal.Decimal("nan")` (which I think isn't included at the moment).