do something like
StaticDelegateCall
opcode
This is fundamentally different to the FREEZE logic as it would prevent all stage changes, not only for the calling contract.
Having a separate opcode to freeze storage of a specific contract is more flexible and the use with delegatecall is just the most obvious one. I outline this use case before in a different post Add opcode to access storage trie root hash for account