It would seem to me that your Account object has numerous behaviours. With behavioural modelling you ideally want to break it down so that each object has only one behaviour. This may lead to you having a number of Account objects that each have their own individual behaviour or purpose, and will therefore map easily to any use cases you may have. What stumps a lot of people is that this is likely to involve "duplicate" code, although this isn't strictly true. It is likely that a number of objects share the same properties and retrieve the same data, but they do so for different reasons (behaviours).
So with that in mind think about the parts of your account object and see if you can break it down. As a start point you could have Account, AccountInfo (lightweight & read-only), and AccountList (read-only list of AccountInfo).
From what you've said, I think you can seperate a lot of functionality from the "Account" object. Configuration, Notes, and Documentation could be made into objects in their own right. You still could provide methods in an Account class such as public AccountConfiguration GetAccountConfiguration().
Also consider the following:
AccountNotesList : List<AccountNote>
AccountDocumentList : List<AccountDocument>
Hopefully by breaking these different objects away from a huge "Account" object will keep your code far more maintainable. Also consider the different behaviours of the "Account" object and see if you can break it up, such as Purpose1Account or Purpose2Account.
UK Daaarn Saaarf