Yeah I really should change mine to just use a vector internally. I had been trying to be clever and save space.
Modulo wrap around is very easy for fixed-sized values. It just means you only keep the n lowest bits of the result.
But certainly for a variable-sized bigint, unsigned doesn't really make sense.
Your code seems to be very high level and well commented. Mine is more designed for high performance and less need to understand how it works hence less commenting.
In fact your code reminds me of this: http://ericlippert.com/2013/09/16/math-from-scratch-part-one/