IMHO if it were possible (and easy enough to implement) to have the
property connection-wide without caching it, it would make for a
better user experience.
What about to make it a connection-local variable?
Maybe? How will that look in customization?
Will we set some variable with 'setopt', or setq, or just have to do
this through Customize?
You would do something like
--8<---------------cut here---------------start------------->8---
(connection-local-set-profile-variables 'remote-direct-async
'((tramp-direct-async-process . t)))
(connection-local-set-profiles
'(:application tramp :machine "randomhost") 'remote-direct-async)
--8<---------------cut here---------------end--------------->8---
`remote-direct-async' is a profile name you could choose
yourself. `tramp-direct-async-process' would be the respective Tramp
variable.