Use the following:
xnoremap p pgvy
this will reselect and re-yank any text that is pasted in visual mode.
Edit: in order this to work with "xp
you can do:
xnoremap p pgv"@=v:register.'y'<cr>
v:register
expands to the last register name used in a normal mode command.