Thanks for the report - this is a genuine compiler bug.
Result on Task(Of T) is supposed to be typed as T, but the compiler's type checker currently treats task.Result as Object, so assigning it directly to a DBAnswer variable is rejected. The task itself holds the correct value at runtime - only the compile-time type of the expression is wrong. That's also why your two workarounds behave differently: Await t1 after Task.WhenAll unwraps the type correctly, and an explicit cast satisfies the checker.
Until the fix ships, Await is the cleaner option.
I've logged it here and it's queued for a fix: https://feedback.objo.dev/bug/1616