Если вы выполните это в UI-потоке, возникнет deadlock. Видите, почему? Task, возвращаемый из GetOneAsync, ожидает окончания таймаута, после чего собирается вернуться в UI-поток, чтобы выполнить return 1;. Но GetResult() блокирует UI-поток до получения результата! Таким образом, в функции GetOneAsync возврат в UI-поток никогда не произойдёт.
Прямой вызов GetResult() не приводит к проблемам в некоторых случаях — например, в случае, если Task уже завершён. Вот эту самую проверку компилятор делает, так что его вызов GetResult более безопасен.