I found a solution for what seems to be the same problem, in a different language: a particular type of lists, where the class metadata is stored once and the data for each instance is contiguously stored in a flat array.
Not sure if it covers exactly the same terrain, but perusing the article, it seems to be the case, with a single instance being the degenerate case.
Yup, it's the same terrain.
I've made something like this in the past. And I did it exactly because `List<Foo>` was too expensive and slow.