It's definitely not orthogonal. Mutable borrows require affine types.
How might that look if you tried to do this in, say a (not compatible with C) C-like language? I thought the ownership system (affine types) was required for the borrow checker to work.