Modifying File Doctype Storage Location

I’ve been trying for a while to understand the capability of a custom app vs. modification of the core.

It would be convenient to be able to utilize different storage engines/locations for a File doctype (disk for public files, S3 for private, S3 for all, etc.) with the same access methods as today’s File doctype. Is a custom app able to modify the behavior of a core doctype? Or would one need to create a custom S3-backed File doctype to be able to completely replace the functionality?

I appreciate any help you can provide in understanding the Frappe app and core architecture. Apologies if this has been discussed before, I just couldn’t find this exact answer.