What are your thoughts about this?
https://medium.com/coinmonks/on-efficient-ethereum-storage-c76869591add
For immutable data sets with many fields, using assembly's create() seems to be the most efficient, especially with the bitwise approach you highlight for booleans.