Testing MsgPack and BSON
zhen.org
zhen.org
Then I'm surprised you overlooked Thrift so quickly given that it has several binary and a JSON encoding. There's also an official Go implementation in tree, and you get the comfort of a protobuf-like schema format (which with code-gen means you don't have to rewrite a bunch of code if you want to use it across languages).
Other nice options: Apache Avro (no code gen, json schemas, very dense encoding) and Cap'n Proto
In terms of rewriting a bunch of code, msgpack and bson both easily marshall/unmarshall in just a few lines of code so not a lot of rewriting. Libraries exist for all types of languages.
Maybe I need to update my criteria. Thx for the comment tho.