Card freezing now works exactly as intended. Turns out, revalidate() needed to be called. That's it.