I live in an area with loads of shared cycle and walking paths - it’s lovely. In the summer, we have a lot of narrowed paths because shrubs and brambles get unruly, and we end up with some blind corners and path junctions that are a bit hairy - not just people on foot but also other cyclists.
I have trained my son to deal with this as follows:
If you can’t see the path ahead of you to know it’s clear, you need to be going slow enough to stop immediately.
You never buzz past a pedestrian - so pass at a “trickling pace” or move onto the grass alongside the path to pass wide at speed. We have a few paths which are very wide and we can call out “passing on your right” and when pedestrians are walking towards us they’ll usually pull to one side of the path and we will then “pick the other side and stick to it.”
If someone is walking ahead of you with a dog, a pram, a child on a scooter, they won’t be concentrating and there’s a risk of something unexpected happening, So always be ready to stop. We use out bell to give people a warning - we also use our bells ahead of blind corners, and reduce our speed just in case.
We avoid routes and times that are narrow and populated with walkers/joggers with earbuds and/or dog walkers. I wouldn’t cycle a narrow canal path as it doesn’t sound like fun since we’d be start/stop the whole way.
Generally if people are getting cross with you it’s likely because you’re passing them too fast or too close, which is rude and dangerous.