Can a two-dimensional array have a different data type for each dimension?

Put whatever data you want in a linear array. Write a translator to decide what the data is and write "dimensional" math to extract the correct element from the correct dimension.

Here is how I made fake 10-dimension arrays... using a single dimension array... and why I can not think in terms of struct or arrays of arrays... in PROGMEM.