OK, I discovered that the function MUST include more information, which I did not sufficiently explore in my initial tests. Custom objects seem to be unique in this regard. Whereas the crm_objects function calls a full array for standard HubSpot objects, crm_objects must include a filter and the names of the properties being called.
In other words, this works as expected:
{% set webinars = crm_objects("webinars", "limit=5","webinar_title,slug,date_and_time,short_description") %}
{{ webinars|pprint }}
This will then give me a full array with the title, url slug, date and time, and my summary, all of which are custom properties.