How do you approach structuring domain models to ensure immutability and prevent race conditions in financial records?