I want all mails sent to the list to come from the list's email address...
But, in this case, if the user forgets to sign their name at the bottom of their mail body, effectively the mail to the list is anonymous...!
That's why the setting that controls this is called anonymous_list.
Is there a way to add the user name (or email address) to the top of each mail so that the mails have the name of the sender, while the mail itself comes from the list address?
Only by modifying Mailman code or creating a custom handler to do it.
I wonder why you want all mail to be From: the list if you also want the poster to be identified. If it is because you want filtering rules to be able to identify the mail as list mail, consider using some header other than From: such as X-BeenThere: which identifies the list.