You're in the right place!
It's not a regional thing. The pronunciation of the pluralizing
"s" is standard throughout the English-speaking world. The sound
of the "s", as you point out, can be a true "s" sound or a "z"
sound. And the only thing you need to know is which sound comes
immediately before that final "s".
If the sound of "p", "t", "k", "f", or "th" (as in "thin") is the last
sound before the written "s", then pronounce it as a true "s".
Otherwise (and this is most of the time), pronounce the "s" as a "z".
In your list, for example, the words which have
p, t, k, f, or
th
sounds just before the final "s" are
hawks and
rats, so pronounce final
"s" in those words as a true "s" sound. In all the others, the
final "s" is pronounced "z".
Remember: What's important is the
sound that comes before the final "s",
not the spelling. For example, in
laugh, the final sound is the "f" sound, even though it is spelled "gh". So pronounce the final "s" of
laughs as a true "s".
Note: The "s" that forms the third person singular of a present tense verb follows the same rule.
Note: The "s" that forms the possessive follows the same rule.
Note: In words like
witches, the "es" is pronounced "iz", so the
"i" sound is the last sound before the final "s". The use of the
"z" sound for the final "s" is therefore correct according to the rule
stated above.
Note: A final "s" which does not form a plural, present tense
verb form, or possessive does not necessarily follow this rule:
analysis, for example, is a singular form. Both "s"s are true "s" sounds.
CJ