I solved it myself. I should probably mention that it is to be used for a customized newsletter.
First I get the internal sitecore username attached to the mailing list.
var username = System.Web.Security.Membership.GetUserNameByEmail(email);
Then I can get a visitor ID from the username.
var visitor = Sitecore.Analytics.Automation.VisitorManager.GetVisitorByExternalUser(username);
And in this visitor the dataset with the profile keys I'm looking for is located in visitor.DataSet.Profiles
Now I just need to get more than one visitor but its just a matter of doing an SQL call instead of using VisitorManager.GetVisitorByExternalUser and finding all occurences.