When you're running out of registers while writing a JIT, you might resort to more unconventional methods for memory access. You might choose to resort to segment registers if you need a fixed register for memory offsets.
Instructions such as:
lea rax,gs:[rcx+rdx*8]
mov rax,gs:[rcx+rdx*8]
would then be available for your use.