Flexible 2P TicTacToe
You should code to make sure that user input doesn't break any assumptions you are making about the game. For example, I like the gimmick that the players can pick a symbol. However, you should make sure they pick a sensible one. What happens if they pick the same? What about if they pick space?

I would suggest that in the code you use fixed indicators, and replace them when you display them. If not, do some input validation to block weird choices. 

As to your question about the draw detection, counting is standard. You could keep a variable to hold the count, and update it each time someone plays. That avoids most of the work recalculating each time.

Your technique for swapping between the two players works and is quite creative. However, I would strongly recommend that you have one outside loop to keep the game going and two distinct inner loops to get player input. This makes it clearer that the behaviour of the players is symmetrical. 

Building on that symmetry, you could then have just one input loop and keep a variable recording whose turn it is.