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

Refs #18681.