ENH: Allow keep="all" in duplicated method (#23251)
- [ ] closes #23251
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Unfortunately this didn't end up being as clean as I had hoped (due to preventing keep="all" being allowed when calling implicitly through drop_duplicates. So put in a bit of duplication of error handling. Happy to take suggestions if there's a better approach.