Awesome post. All this discussion makes me realize that we haven't hit the sweet spot yet and need to keep considering more message passing use cases. I am wary though of providing too many options and very much want to have one channel type that is most useful and least error prone that we can recommend by default.
I do disagree slightly with the final conclusion that context switch on send defeats the advantage of unbounded channels since work stealing will ensure the sender runs again very soon.