Web counterpart of D7647.
Sometimes encountered weird errors when creating the `olm.Utility` multiple times so decided to cache the instance and lazy-init Olm.
---
Due to [[ https://linear.app/comm/issue/ENG-3845/js-olm-sha256-fails | ENG-3845 ]] I decided to opt out of Olm here and used WebCrypto instead