I wrote a small library for this exact thing: https://github.com/jeanlemotan/jlm-back-buffer
It gives you a backbuffer with very fast SPI updates and a few extras: antialiasing and alpha blending.
The good thing is that you get to control how much memory it uses - from around 3K to 150K (it's 16bit color depth), depending on how much of the screen you update per frame. Half the screen needs half the memory, same for 1/4 and so on.
It's way way faster than other methods - like update/erase/update, etc. Also - no flicker.