The Berlin atmosphere is always decent enough at one end of the ground and depending on the opponents might be even better than that if the stadium is nearer capacity. Was one of the best atmospheres I have seen for the Frankfurt game on the opening day of the season. Bonus of having plenty to see and do in the city as well.
If considering Dortmund you would be far better staying in Duesseldorf anyway which is a good city (very good compared to Dortmund) and your match ticket covers regional trains to the stadium from there. I've seen all that German teams have to offer home and away and Dortmund's atmosphere is way overrated in my opinion considering the numbers in there but its a very good stadium albeit with a lot of football tourists jumping on the Dortmund wankfest of late. Not helped by their old firm type fans either.
Schalke is handy for a Duesseldorf stay as well but not sure re availability of tickets these days. You may also have the option of Cologne or Fortuna Duesseldorf Bundesliga 2 games nearby on a different day as well depending on matchdays and who is home or away.
Hamburg is a great city and another good stadium to visit.
Bremen is smaller but good boozer scene although not sure what else is on offer in the city.
Not a lot to do tourist wise in Frankfurt to be honest but the football is a good day out. The Stuttgart game you mentioned would be near sell out with full away end.
Munich is a great city with plenty to do and a very impressive stadium. Atmosphere not the greatest and tickets would probably have to be bought in advance at a premium on viagogo or try your luck at the stadium train station where people always sell them - isn't ideal when it's for a birthday present!
That covers most teams mentioned. You are probably best checking which games take your fancy on the weekends you are looking at
Clubs and players - Bundesliga - official website - matchday 23 -and then checking dates, times and prices of the flights.