ProviderError: The method eth_signTypedData_v4 does not exist/is not available

Once your code is finished you're going to have to get an expert opinion on the security of the code. At the moment I can't say whether anything needs to be changed.

Yes upgradeability is possible. Just give it a shot using our resources.

I'm not familiar with Rarible's use of ERC1271. You may need to change parts of the code and use our SignatureChecker library.