DownloadStringAsyncではなく、DownloadTaskAsyncを使った場合はHtmlをちゃんと取得できています。
(文字化けにはまだ対応してませんが)

static void Main(string[] args)
{
var uri = new Uri("https://www.yahoo.co.jp/";);
var result = GetHtml2(uri);
MessageBox.Show(result.Result);
}

static async Task<string> GetHtml2(Uri uri)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
var client = new WebClient();
var result = await client.DownloadStringTaskAsync(uri);
return result;
}