Dusseldorf or Essien would be great for the Dortmund game .They have a great rail system and it's free if you have a matchday ticket and really cheap if not. Berlin has a fabulous rail network/trams and you could easily stay outside of berlin to keep the cost down.