Have you tried Slacker? You can adjust artist/album/song stations[1], there are staff-curated stations, and you can filter stations by mood. Three user tiers ranging from free to $10 monthly.
They won my affection when they made a station devoted to the music of Breaking Bad to celebrate the start of the final season.