Blueprint Macros vs Functions feels like an unnecessarily exposed abstraction

The problem is to use the functions and macros for gameplay, I had the same problem in the past and my self of the past could understand you.
My present self tells you to forget the nonsense of doing functions and macros so that the code is cleaner.

Use functions to return calculations if you can not put it pure should not be a function.
Use macros for the flow of variables or to get different lines of execution based on questions.
Use events for the gameplay, where you can use delays, timelines, dispachers …