S>Читал про Span<T> но не понял как его применить для задачи, если он вообще применим для такого.
Span<T> это только тип, к нему ещё идут всякие классы, которые позволяют что-то полезное с этим Span делать. Посмотри на документацию к MemoryMarshal:
struct S
{
int N;
}
public void Set10()
{
S[] items = new S[1];
var span = new Span<S>(items);
var bytesSpan = MemoryMarshal.AsBytes(span);
bytesSpan[0] = 10;