Even though 15K user is not much; in my opinion option 1 is not a good option because it is not semanticly correct. Messages don’t conceptually belong to balances.
Messages belonging to profile or account is more reasonable. Both of these entities represent the real user and messages sent / to by user makes sense. If you would like this messaging module modular together with profile (I mean both of those modules to be re-used inanother application), relating the messages to profile is a very good option. If you would like messages module totally independent from profile (ie if you intend to use inanother application where you may not have the profile module) you can relate it to account.
In my opinion, relating messages to profile is more reasonble. If you related messages to account and in another application if an account might have multiple profiles (ie: user has separate characters, roles, or app presences) messages might lose their context: you can’t tell which profile sent/received message without keeping extra information.
Lastly, based on messages releation (profile or account), you can keep the balance information in that selected entity as well. I think keeping balance might not be required unless you intend to keep a detailed accountant like history on the balance.