How can I get the Terminal to keep a separate history per tab/window?
You could do something like this in your .bashrc:

MYTTY=`tty`
HISTFILE=$HOME/.bash_history_`basename $MYTTY`


This will create separate history files in your home directory such as .bash_history_ttys002.  When you create a new terminal window, it will use the history file corresponding to the tty name, which will usually be determined simply by the order in which you create the terminal windows.