So I spent 20 mins whacking some caching in around the _build_langauges_arrayref subroutine in C4::Languages in Koha.
Before and After. Ill take that as a win. All that needs to be done now is add code to the script that handles updating the language syspref, so that it clears the cache when its changed.