Is it possible to do geocoding in cronjob only?
I suspect you can pass skip_geocode to the params of 'fixAddress' a number of ways (such as injecting it with tpl override or javascript).

Check CRM/Core/BAO/Address.php line 381-382.

// check if geocode should be skipped (can be forced with an optional parameter through the api)
$skip_geocode = (isset($params['skip_geocode']) &amp;&amp; $params['skip_geocode']) ? TRUE : FALSE;


Leave geocoding enabled so the cron process completes it, but it is skipped when accessing via web.