[v16.x backport] WebCryptoAPI fixes
We can safely bring v16.x WebCryptoAPI spec conformance to the level of our other LTS/current releases with the backport of these PRs:
- #46042
- #46043
- #45320
- #44917
- #45569
- #46067
- #46563
- #47877
NB: WebCryptoAPI is still https://github.com/nodejs/node/labels/experimental in v16.x