I want to add custom domains to my Heroku app that's running on free Dynos.
You can certainly add custom domains to an app running on Free dynos by following the same steps as for Paid dynos here.
What does require you to use a paid (Hobby or higher) dyno is if you want to implement SSL for your Heroku app's custom domains.
NOTE: You must verify your account to add custom domains to your app.
WARNING: Starting November 28, 2022, free Heroku Dynos, free Heroku Postgres, and free Heroku Data for Redis plans will no longer be available. If you have apps using any of these resources, you must upgrade to paid plans by this date to ensure your apps continue to run and retain your data. Eligible students can apply for platform credits through our new Heroku for GitHub Students program. See our blog and FAQ for more info.