I dont know how I would subtract the 3 from the input digits without changing the number first into 2's complement and then back to binary and feed it into the register.
This isn't as complicated as you seem to fear. When you need to subtract 3, the number you're subtracting from is 8 or greater (i.e., always positive), and the result will obviously also be always positive. Therefore, you can simply use a 4-bit adder to add 11012 (the value -310 in 2's-complement) to the number and ignore the resulting carry bit.
1000 + 1101 = (1)0101 1001 + 1101 = (1)0110 1010 + 1101 = (1)0111 1011 + 1101 = (1)1000 1100 + 1101 = (1)1001 1101 + 1101 = (1)1010 1110 + 1101 = (1)1011 1111 + 1101 = (1)1100