Introduced `BaseModelAdmin.get_fields()` and cleaned up admin fields handling

Refs #18681.