Regarding question 2: Yup.
When you spectate a replay, you are using a special replayplayercontroller. Just as with the normal PlayerController, you can derive from it, add functionality and set your new class to be used from within the GameMode settings iirc.
Your ReplayPlayerController could then implement camera switching, free fly, whatever you like