Simulate whether a B20 token transfer is permitted given live freeze/blocklist/allowlist state. Returns allowed/blocked with reason (frozen, restricted sender, restricted recipient, allowlist mismatch). Pass { tokenAddress, from, to, amount }.