How to separate UI language from node's language?
I forgot this in my initial comment but you can actually solve this by installing Entity Translation!

It separates entity and interface translation. With both you can specify different language negotiation schemes. In admin/config/regional/language/configure simply set the user's language setting as the highest priority in the interface language negotiation queue.

By having URL as the first criteria and user preference in the content language negotiation queue you can attain this functionality you documented.