Cache derivative taking so that we start from the nearest available
derivative (apparently, sympy doesn't do this). This lets translation operators with big derivative expressions (order 20ish) finish compiling in a reasonable amount of time, even without symengine.