The cheap experiment that I would do before spending anything, because it answers the question for a fraction of the price: a topper on one side of what you already own.
Buy one topper, put it on the side of whoever wants softer, and live with it for a month. A fitted sheet holds it in place well enough.
What you learn:
Whether the softer person is fixed by a surface change alone. If yes, you are done and it cost very little.
Whether the firmer person was actually fine on the current mattress and it was only ever the other person's problem.
What direction to go if you do end up replacing things.
It looks slightly odd and nobody sees your bed.
Two things worth knowing if you go on to buy anything:
Use the trial period properly. Most mattresses sold with a trial need weeks before your body adapts, and people return them at day ten. Give it the full period, and mark the date you need to decide by.
Buy for the heavier sleeper if you must have one mattress. Somebody too light for a mattress is uncomfortable; somebody too heavy for one is unsupported, which is the worse failure.