Is there a way that I can add a custom field to the booking process that contains a dropdown list can be chosen from to track referrals?
Ideally this would be on the front-end and allow guests to do so when sending an inquiry or making a booking but even if only accessible from the bank end would suffice for my purposes.
Along those lines - what report would then show that information over X period of time?
The way we do this is called the "listing site". That is available on inquiries and bookings in the Info tab. You'll get a list of the built in sites, and then in Settings > Channels you can add custom sources which will also show in the list.
That won't be selectable by the guest on checkout, but it will be prepopulated for inquiries/bookings through listing sites. If you've got guests coming through hosted websites or book now widgets, you can also set custom sites there.
To get a report, look at the Inquiry/Booking Volume or Listing Site Performance reports in the Reports section, under Analysis and Statistics in the top right.
For a free-form box like "where did you hear about us?" where the guest can type something in, you could add a custom field on reservation: https://www.ownerreservations.com/support/articles/capture-additional-fields-on-checkout-quote-acceptance -- but since it's just freeform, you won't be able to do an report over time on that data.
I use freeform box and it works quite well