fix: prevent GC-related access violations in DataPacket unsafe operations
Each pointer operation now happens within its own fixed block to ensure
the buffer array remains pinned during the entire read/write operation.
Previously, the dataPointer property would return a pointer that could
become invalid if GC moved the array between getting the pointer and using it.