The new implementations are more permissive than the old ones*. So if your program is rejected, it would have been rejected under the old, simpler implementation as well, and you can use your intuition of the simpler rules to understand why.
*excluding bugfixes, of course
What's actually hard to reason about is problem cases like in TFA which seem like they should be valid, but the compiler rejects anyway. These are cases where people's intuition doesn't match the current implementation, so I think moving the implementation closer to people's mental model of borrowing will make the language easier.