Почему не выполняется рендеринг после обновления данных?
Смысла повторяться не вижу, потому что другие уже указали на ваши ошибки. Переписать можно так. И плодить кучу соединений не стоит, достаточно одного. И не забывай отписываться.
Потому что кусок
var result = {};
  result.price = {};
  result.price.buy = {};
  result.price.sell = {};

  arr.map((res, key) => {
    result.price.buy[res] = {};
    result.price.buy[res].price = "Загрузка...";
  });
  arr.map((res, key) => {
    result.price.sell[res] = {};
    result.price.sell[res].price = "Загрузка...";
  });
У тебя выполняется на каждый вызов функции
У функциональных компонентов нет метода рендер, сама функция выполняется каждый раз когда у тебя поменялся стейт или пропсы.
Вынеси result в стейт (useState) и в ивент листенерах меняй стейт