"Would prefer to have" can entail some degree of regret or none at all, depending on context.
For example, you and your friend are to book a hotel. Your friend chose the hotel based on his likings. Let us say he did so because it had bigger rooms. But the number of restaurants are too few.
You would have chosen a hotel with rooms of average size but with greater number of restaurants for variety.
It is just a contradiction of thoughts and "would prefer to have stayed" "simply implies that you would have made a different choice.
It is also used in construction of conditional statements.
Example - I would have succeeded if my luck helped.
"Should have" implies a higher or definite degree of regret.
For example, you ended up choosing a cheaper hotel but it is outside the city and now you rue about it by saying that you should have stayed at the other hotel that your friend chose.
It is also used to express disappointment.
You shouldn't have betrayed my friend.
So use "should have" when expressing regret or disappointment over one's or other's actions and "would have" when expressing choice or condition.
Edited- Expounding the comments.
It is tricky with "would" and "have." It depends on the construction/syntax.
would like/love/prefer to construction suggests preference or choice.
Whereas, would have liked/loved/preferred construction has more to do with regret and compunction.