Improve ArrayPool core affinity (dotnet/coreclr#8716)
- Move the ExecutionId to non-generic type so that it can be shared by all ArrayPool instances.
- Add logic to refresh it periodically. It avoids pathological cases where the OS scheduler ends up reassigns the preferred cores and multiple active threads start competing over the same buckets.
- Removed flushing of ExecutionId on LockedStack lock contention since it was not very effective
Commit migrated from https://github.com/dotnet/coreclr/commit/
281b93760c7c6a7e9059f9a5dc6a5c6cfc0e4879