I was thinking earlier on (run away! run away!) about one of the objections to PR that is often raised, which is that it removes the link between "local" candidates and the areas in which they stand. (Sometimes an MP with whom one doesn't necessarily agree on party lines can be useful nonetheless for getting local issues sorted.)
Why not do something along the following lines?
- Reduce the number of constituencies so that each new constituency is about X times as large as one of the old ones (I'm thinking along the lines of X being about three or so at the moment);
- Each voter retains their single vote, but each constituency has up to X candidates available (listed in an order of preference);
- Each voter votes for a party as at present;
- Seats are allocated by the proportion of votes received in the new super-constituency.
This way you still get about the same number of MPs (significantly more or fewer would probably cause issues either way) and people still have someone _relatively_ local representing them, but you get more of a spread of parties. Possibly you might need to make X more than three to give better granularity, but there aren't so many seats where the incumbent got more than 66% of the vote, I don't think.