Как сделать асинхронность без await?
Добавьте в метод
await Task.Yield();
stackoverflow.com/questions/22645024/when-would-i-...
Task.Run добавить задачу в очередь, которая выполняется на пуле потоков, т.е. у вас не будет дополнительного создания поток.
Кроме того, я не нашел в документации Task.Join, поэтому не понимаю, что вы имеете в виду.