addView() метод быстрый. Вы слишком много всего делаете в UI потоке. Заполняйте ваш LinearLayout плейсхолдерами и выносите создание вьюшек в AsyncTask, как это всегда делается.
Однако, если вы создаёте схожие вью и заполняете их разными данными, то смотреть надо в сторону RecyclerView, он именно для этого предназначен. И, нет, с ним можно сделать всё что угодно, а не тратить ресурсы на постоянную перерисовку большой группы вьюшек.