Add (sparse) structs to Fact thrift format

I'm OK with turning this into `if/else` if people prefer.