BUG: Fix #16363 - Prevent visit_BinOp from accessing value on UnaryOp
- [x] closes #16363
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Checking `hasattr(side, 'value')` resolves the bug and is consistent with the way that other methods of the `BaseExprVisitor` class work (e.g., both `visit_Call_35` and `visit_Call_legacy` check for 'value').