Do you know any tricks/hacks to perform arithmetic operations with shift registers?
It is relatively easy to construct a circuit which will take two LSB-first serial data streams along with a signal which identifies the first bit, and output the sum or difference as a serial data stream.  A fixed amount of circuitry will be able to handle inputs of arbitrary size.

There are two general approaches to performing multiplication using shift registers.  If one wishes to multiply an N-bit number by an M-bit number, one may use relatively simple hardware to perform the operation in approximately NxM steps using the above "adder" plus some circuitry to coordinate things (assuming external circuitry can supply one of the multiplicands a bit at a time, can supply the other multiplicand repeatedly, and can feed back the partial product).  A much faster approach requires the use of M single-bit addition stages, and can reduce the required time to approximately N+M (the length of the result).  Note that even the faster approach does not require the use of fast carry-propagation logic; each stage can latch its carry output and accept it as a carry input for the next step.