Turbo frame pulls content, turbo stream replaces content. I don’t know that the need to be combined.
To avoid the flicker, add one more layer in loading the content.
INITIAL PAGE HTML:
<div id="message">
</div>
<turbo-frame id="message_frame" src="/messages/123" style="display: none;"></turbo-frame>
URL TURBO FRAME URL RESPONSE (/messages/123)
<turbo-stream id="message_frame" style="display: none;">
  <template>
    <turbo-frame id="message">
      Mesagges
    </turbo-frame>
  </template>
</turbo-stream>
WEBSOCKET UPDATE
<turbo-stream action="replace" target="message_123">
  <template>
    <turbo-frame id="message_frame" src="/messages/123" style="display: none;">
      Updating...
    </turbo-frame>
  </template>
</turbo-stream>
If this were a part of turbo if it was more more generic. Meaning, updating attributes on an element rather than replace the entire element.