Reduce visibility of more data type internals
Many of our data types -- particularly the ones in or.h -- have their internals visible across modules, in a way that harms modularity and leads to weird code couplings. We would do well to reduce this visibility and refactor as needed.