Было бы здорово ещё пример JSON увидеть.
Но вообще, костылём будет как раз пытаться обойти вызов второго запроса. Почитайте про Combine и сделайте как-то так:
Перед запросом выставляете на UI лоадер, вызываете первый запрос, если в нём получили в JSON ещё один url, то синхронно с первым выполняете второй запрос и уже итоговый набор данных возвращаете в completion вместе с выключением лоадера и перетасовкой UI. Если url не получен, то после первого запроса вызываете completion со всеми приседаниями по UI и с учётом отсутствия ссылки.
Но вообще, лучше бы сначала лоадер на весь интерфейс, после получения первого JSON лоадер снимаете и делаете второй запрос по ссылке из первого с лоадером на тот элемент, который должен загрузиться из урла в json