How is the storage layout when inheriting contracts?

Yes, those are correct. Here's an example of extending a contract, similar to your last suggestion: New storage layout is incompatible: ContextUpgradeable.sol:36: Inserted `__gap` - #3 by frangio