> Hopefully we'll have a Thread abstraction that will handle this one day (Thread.fromDraft and Thread.fromMessageThread)

Yes, I think I own that ticket

>  Draft object can have a asThread method that would just return a thread-like json?

Do you mean object—there is no JSON. Drafts are always objects, ie. never appear serialized in the application

> another idea is to have drafts expose participants instead of recipients.

But they're not participants yet and it would create the same mismatch for the "send" case, which are "recipients".