Using 2 datasets to browse/edit/delete the same data is really looking for problems. I don't know why you are not using the same dataset for mainunit and editorunit. Everything would be in sync without all the problems you are encountering now. In the same time you would avoid all the superfluous DB interactions, locates, etc.
haven't just tried with a refresh (which delete should be doing anyhow!)
No. It shouldn't. A dataset is a copy of the data in memory. Edit, Insert, Append, Delete, Post are actions on the in memory dataset. They are logged in memory and do not affect the DB. The change log is only transferred to the database with ApplyUpdates. Refresh reloads the dataset from the DB. So a delete followed by a refresh is a no-op. Actually an exception will be raised telling you to ApplyUpdates before Refresh.
Now your next comment will be that mainPeopleDatasource is read only because of the join. That is because sqldb can not figure out automatically how to update/delete/insert into a multi-table relation. But that is exactly the purpose of InsertSQL, etc. Fill those in and you can use mainPeopleDatasource everywhere. Your second table is just a static lookup, so the queries are trivial.