* Separate clusters by function / noise level -- We didn't put sales people and developers next to one another. People who spent all day on the phone were near other people who spent all day on the phone.
* Keep clusters small -- We had 4 person "pods" of desks for most of our early lifecycle. You weren't constantly interrupted by a dozen people from every direction, but you had a few people you could bounce ideas off of when you needed to.
* Lots of breakout spaces -- If you need to have a conversation that lasts more than a minute or so, find a private space. It was nice to hear a snippet of a conversation and decide "I care about this topic, let's break out and discuss further" or "This is not relevant right now, I'm going to disregard."
* Be respectful of flow -- If someone is deep in focus, just leave a post-it on their desk or send a message via chat. (This was a good form of one-bit communication for us.)
I don't think it's impossible to create a great open office layout. People just copied the ceremony without the essence. It's no different than "Agile is broken! We have 20 minute standups 3 times a day and nothing gets done!" Maybe the reason is because you're doing it wrong.