Повторение @Martin Smith комментария, разворачивания, объединения и разворота, вероятно, было бы наиболее эффективным и целесообразным с точки зрения производительности, а благодаря разработке тонкостей разворачивания и разворота ваши разработчики стали бы более опытными и, следовательно, более производительными со временем.
В качестве альтернативы, если имеется 20 и всегда 20 денормализованных столбцов, вы можете просто выписать 20 левых внешних объединений (при условии, что когда-либо Лендер не связан с 20 агентствами). Это ужасный код, и для обработки 20 соединений потребуется SQL ... но если таблица Агентства мала (где я бы назвал 8 страниц / 1 экстент небольшим), тогда общее время обработки может быть относительно короткий. Потребовалось бы провести тестирование, чтобы определить, какие из них наиболее эффективны.
Что касается общей производительности разработчиков, следите за тем, как долго все занимает (включая отправку в SO). Когда это будет сделано, подсчитайте все и используйте его, чтобы показать, сколько времени было потрачено вашими разработчиками на работу с плохо спроектированными таблицами.