It's a limitation of how Magento works. As you are no doubt aware each StoreView will have it's own ID.
But in someways this might be a good thing. You might not want duplicate content on different websites.
Also in setting up the above you cannot share EN baskets and customers for example. So it would make sense to have a layer of separation with product data.
You could use observers on product save etc to unify data - or external db syncs but then indexing becomes a factor.
Website A
|__ Store A
|__ StoreView EN 1
|__ StoreView DE 2
|__ StoreView FR 3
Website B
|__ Store B
|__ StoreView EN 4
|__ StoreView DE 5
|__ StoreView FR 6
Website C
|__ Store C
|__ StoreView EN 8
|__ StoreView DE 9
|__ StoreView FR 10
So the principal is that any insert/update to data in store ID 1 would replicate to ID 4 and 8. So you've got to catch ID 1 save, allow usual index, replicate to 4 and 8 - trigger index for 4 & 8.
You can of course start replicating index tables. But then you've got to watch for table locks.
The alternative is that magento fetches from a common data source for certain attributes such as name, description. Basically 'word' based attributes. So an external service and / or connector. So 1, 4 and 8 fetch from single source.
It's problems that I've faced before and generally we go with whatever the client wants (within reason). I guess the point I'm making is that there is no right or wrong answer.
One thing though. The admin will be a default language. Therefore potentially you could lose the requirements for 2, 5 and 9 to have values set and configure attributes to use default value if your admin is in DE for example.