А вобще разделение  на Query и AsyncQuery тоже как-то не очень выглядит. Ведь сам запрос никак не влияет на то, как он будет выполняться. Хотя я посмотрел как это реализовано — текущий вариант самый простой. 

Есть еще вариант сделать execute и executeAsync. 
А по мне так лучше просто всегда возвращать Future[T] — это самый универсальный способ, правда сломает backward compatibility :)