Here's the easiest way to tell which is bad (my bet is on the starter).
Disconnect the battery - post.
Remove the small wire from the starter (should be yellow with a light blue stripe).
Reconnect the battery.
Turn the key as if to crank over the starter (nothing will happen).
Release the key so that it remains in Run.
Go underneath and touch that wire back to its post (or use a meter to check for 12v).
If the starter cranks, replace the relay.
If it doesn't crank, replace the starter.
In a case like yours, I would remove the starter and take it apart.
You only need to remove the solenoid portion and the gear end cap, not the brushes end cap. Clean up the crud and lightly apply a good dielectric grease to the gear's shaft.
Be aware that the small planetary gears will fall out.
I am betting you can fix it for free. I've had several through the years that stuck engaged and a clean and lube fixed them all.
Once you are in there, you'll see that whenever the gear is engaged, the internal switch is made. So if the gear shaft is crudded up, it'll stick on just like you describe.
Worst case, just douche and lube the gear shaft with no disassembly whatsoever, which I've also done successfully.