PIIMiddleware state hooks miss tool-call args and corrupt structured content
PIIMiddleware has two divergent redaction paths: the state-level hooks (before_model/after_model) still manually stringify message content, while the recursive walker added in #37616 handles structured blocks and tool-call arguments. This causes tool-call-only AI messages to be skipped entirely and structured content blocks to be corrupted into their Python repr string, leading to PII leakage and downstream parsing errors.
