вариант: делаете компонент WalletsContainer, в которой передается массив кошельков (сначала пустой, а потом уже и заполненый, и все без доп проверок, просто пришли новые пропсы), в котором внутри проверяется запросом каждый кошелек (через promise.all в экшене) и в итоге по окончанию проверок всего что нужно - вызывается апдейт в сторе. Либо апдейты в сторе вызываются асинхронно, обновляя только нужный кошелек (запрос на баланс котрого завершился). Если нужно взаимодействовать с родителем - либо функции прокидываете, либо используете redux далее.
еще вариант: " Придется городить какую-то херню со счетчиком, похоже, чтобы работало только первый раз." только без херни. Смотрите если в кошельках было пусто, а стало густо - обновляете и делаете какие нужно запросы. Если нет - этот "иф" проскакивается и ничего не происходит.