In the "more": nodes have revisions. They have a body in the node_revisions table.
Yes, and AFAIK, there is already an effort to turn node_revisions into field revisions, eliminating node_revisions. But then again, who says that a contrib module implementing private messages (or whatever) has no use for revisions?
What you are proposing is to implement a more generic "Drupal Object", of which the Node as we know it would be a particular version. That makes a lot of sense, and would allow us to also properly implement "set based lazy-loading" one day.
I'm not sure whether I would go that far. Was rather thinking that re-using the schema of {node} along with the API for nodes would dramatically simplify a lot of contrib modules and would "automatically" introduce the flexibility and customizability of nodes. - Which also results in a much nicer DX experience, because you wouldn't have to lookup, learn, and hook into countless of node-alike implementations. But, most probably, you are right. :) sun