Для Вашей задачи нет универсального и "правильного" решения, все зависит от UI и бизнес логики приложения. Для простых View, Ваше решение вполне рабочее. Единственное, можно использовать View.GONE вместо View.INVISIBLE, чтобы невидимые View не участвовали в процессе измерений контейнера.
Если у Вас сложный UI для errorBlock, допустим это форма отправки сообщения об ошибке по email или еще что-то этом роде, то можно подумать об отдельном фрагменте для errorBlock.
А так, просто не значит плохо!