SurfaceView нужен, чтобы на отдельном потоке рисовать всякое разное. Для игровой графики, например. Запихнуть туда обычные контролы нельзя. Оно не для того придумано.
Кнопки и другие контролы весьма статичны, они нагрузку не создадут. Как раз UI удобно делать вокруг SurfaceView. Можно делать свой прямо в нем, но, на мой взгляд, гемор того не стоит.
Анимации UI делаются через аниматоры на главном потоке и оч. хорошо с этим справляются.
Сдается мне, вы хотите заняться преждевременной оптимизацией ;-)