Don't unnecessarily copy the key list

Within the son implementation, don't use `.keys()` which copies the key list but instead ensure iterations don't change the keys and use the `__keys` to improve performance.

We need a tagged version against 2.4.1 just to minimize changes for a long-delayed release.