Remove allocations from Environment.GetResourceString (dotnet/coreclr#9194)
* Remove delegate allocations from ResourceHelper.GetResourceString
* Remove state object allocation from GetResourceString
Now that we're no longer using ExecuteCodeWithGuaranteedBackout, we don't need the try/catch/finally functionality separated out into separate methods, and thus we don't need to allocate an object to pass into them.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d1699dce65111fe44a85b35637b1f05a5b497f7e