I am trying to design a data model which can hold a very large amount of data, does anyone with experience in large volumes of data have any feedback on this, ie:
You are correct that Transaction and TransactionAccount must be in the same entity group in order to do the transactional insert and update operation.
The reason to shard is to reduce write contention but you say this will be a low write entity, so sharding is not needed here.
To keep the size of your entity groups down, you can device some type of archiving process. For example, if this is for a bank account, then when the monthly statement is generated you could archive that month's worth of transactions.