UUID, less stored. Player holds a lot more useless values that you won't need. If you need to get a player from a UUID, you can use Bukkit#getPlayer(uuid) or Bukkit#getOfflinePlayer(uuid) Sent from my iPhone using Tapatalk
Depends on the use case. If you need to use a Player object again often and/or quickly then store it in the map. It will prevent you from having to getPlayer() later, effectively speeding things up. Just be sure you remove the Player object when the player logs off to prevent a memory leak. This is a common misconception. You are not literally copying the Player object and carrying it around in a Map. You are simply holding a reference to the Player object where it's located in memory. Thats why you have to release that reference when the player logs off, otherwise your reference to the object isn't going to let Java garbage collect it.
To add on to this you can use a WeakHashMap with Player objects as keys and that should effectively prevent possible memory leak for when a player logs off.