I would hide fields dynamically from python, required them, or read-only; from python I've seen that can return a 'domain' for a field, is it possible this same way also return 'attrs'?
example:
res.setdefault('domain', {})
res['domain']['sale_tax'] = repr(sale_tax_domain)
res['domain']['purchase_tax'] = repr(purchase_tax_domain)