Aparentemente eu precisava fazer
GRANT EXECUTE ON FUNCTION em vez de GRANT EXECUTE ON PROCEDURE . Você pensaria que se
GRANT EXECUTE ON PROCEDURE só funcionou em PROCEDIMENTOS que a mensagem de erro deveria dizer "Código de erro:1305. PROCEDURE businessDayDiff não existe" em vez de "FUNCTION or PROCEDURE"...