Ensure special static slots respect alignment. (#43683)
Without proper alignment, this may lead to reference types
being stored at non-pointer aligned offsets. Among other
issues this may lead to the GC not scanning those pointers
properly.
For example, a type such as
```
struct Point
{
public int X;
public int Y;
}
```
will have size 8 and alignment 4 on x64 platforms.
If we reuse the special slot allocated for the `Point` type to store
a reference pointer, it may not be pointer aligned.
Co-authored-by: joncham <joncham@users.noreply.github.com>