Your copy constructor has only one signature whether implicitly created or explicitly declared, so there's no way for the compiler to generate different code depending on the right-hand operand of that constructor. It has to copy the movable attributes in all cases, because the copy constructor has only one set of code that must work for all possible inputs.
I think your last question may be performance-related but I can't tell for sure. What I would suggest is that you write the most obvious code and let the optimizer have a crack at it. Then profile the results and see if it shows that temporary creation and destruction are causing problems for you, and only if they are should you consider alternate mechanisms.