fix: fall back to public API when PDS doesn't proxy profile
Self-hosted PDS instances may not proxy AppView queries, causing
agent.getProfile() to fail and the user badge to show the raw DID.
Falls back to public.api.bsky.app for handle/displayName/avatar.