I think you're right that this problem is intermittent and/or app-dependent, since I went back and looked at Netflix content on the TV and it was in sync this time, while Youtube was out of sync. So my testing with the external streaming stick might not be reliable. Only time will tell if it really helps
I did notice one odd thing during these tests. When streaming from the TCL TV via Youtube or Netflix, my AVR always received Dolby audio regardless of the source. This is striking because I've configured the TV to output Dolby+, not standard Dolby. Most of the Youtube content I was playing was in stereo, meaning the TV was actually encoding
it as Dolby. Similarly, my understanding (based on this Roku documentation) is that Netflix encodes everything in Dolby+, so I should have been receiving Dolby+ in that case.By comparison, when I streamed from the external Streaming Stick, my AVR received Dolby+ for Netflix 5.1 content and PCM for Youtube stereo content, which is as expected.
If my AVR was getting a Dolby signal from the TV, then the TV must have been up encoding stereo content to Dolby or down-encoding Dolby+ to Dolby. Dolby's own documentation
says that this decoding / re-encoding process takes 219ms, which matches almost perfectly with the delay I've noticed. So I'm wondering if the root cause here is that the TCL TV is re-encoding Dolby signals even when it doesn't need to, and not introducing sufficient video delay to compensate.
I feel like I've really fallen down the rabbit hole on this one, all of the above makes sense to me but who really knows. I just wish that TCL would fix this already.