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.