I assume cache churn is caused by using simple LRUCache - I wonder if Window TinyLFU (W-TinyLFU) eviction policy would give you a better result - well behaved scripts will not be affected by poorly designed dynamic scripts.
Solr has already switched to use GitHub - ben-manes/caffeine: A high performance caching library for Java as default recommended cache due to better caching stats