I faced this exact problem once before. I figured out the sol. Hope the same helps you.
So, I created a class to handle all the state elements depending on their type, cssselector, id, etc and then just called it like I any other page object.
public void StaleElementHandleByID (String elementID){
int count = 0;
boolean clicked = false;
while (count < 4 || !clicked)
{
try {
WebElement yourSlipperyElement= driver.findElement(By.id(elementID));
yourSlipperyElement.click();
clicked = true;
} catch (StaleElementReferenceException e){
e.toString();
System.out.println("Trying to recover from a stale element :" + e.getMessage());
count = count+1;
}
}
My advise is to use this only on elements you know will be problematic for WebDriver.