Именно эта строка отвечает за это
return { response, error };
И, конечно, его соучастник в преступлении - это [fetchOrders]
массив зависимостей во втором useEffect.
Первая строка возвращает новый объект и, следовательно, fetchOrders - всегда новое значение.
Поразмыслив над вашим кодом, я пришел к выводу, что вам, вероятно, вообще не нужен второй useEffect (я думаю).
// the useFetch only re-fetches when url changes
const { response, error } = useFetch(url);
// use response directly, you don't need to re-set the error nor the response in your component.
Но если вы должны были создать побочный эффект с ответом, вы можете рассмотреть возможность обновления вашего хука useFetch, чтобы он принимал параметр обратного вызова и useEffect с зависимостью ответа.