It appears two phase borrows don't apply when DerefMut is involved, even for methods instead of indexing.
Which makes sense: normally a two-phase borrow needs to be "activated" only immediately before the method is called, but with DerefMut involved the borrow must be mutable straight away to pass to deref_mut, before the other arguments are evaluated.
I made a little crate for doing that a few years back that you could play with. It would allow your example as &mut slice.rev()[index] (assuming you meant &mut slice[slice.len()-(index+1)] in your example, so that index == 0 isn't out-of-bounds).