Well, I updated the master to 2.2.15, grabbed fresh output from slapcat,
imported this into the replica with slapadd (after deleting the previous
bdb files), then tried to start replication again.
After those changes, after modifying an entry on the master, the entry in
the replica was simply deleted in whole.
Then, after carefully reading the admin guide again, I noticed that I
didn't have the sessionlog entry on the master. Adding this in didn't
get it working, but it did stop the problem of deleting entries on the
replica.
In my opinion, that sentence in the admin guide that starts: "There is no
special slapd.conf (5) directive for the provider syncrepl server ..."
should really be changed. It's too easy to completely miss the bit about
sessionlog being required.