1. When you get the details of a transaction (gettransaction), is the timestamp that bitcoin reports the timestamp of the transaction itself, or the time when bitcoin received the transaction?
It's the timestamp of the block the transaction is in if it is in a block, or the time you received it if it has 0 confirmations. Transactions don't have timestamps themselves.
2. If a transaction is received, but later determined to be invalid (ie. a double spend), will bitcoin still report those transactions in listtransactions but give an indication that it's invalid (I would think that is desirable since it would be important to detect an invalid transaction)?
It will just stay 0/unconfirmed forever.