Unsett(l)ing
One part of the disinclanation to use a <button> element, and use <div>s or <a>s instead – regardless of it making semantic sense – is surely the particular styling a button brings with it. It comes with a background color, a border, its own text is in a certain font and font size – and all of it needs to be manually and somehow tiresomely resetted it the past.
But fret no more! Modern CSS is at your rescue. The CSS rule all: unset does what is stated on its tin, deals with all typical button styling emulating the operation system and just leaves a generic text that does not look like anything. Hence, it is a good starting point for your own design. Instead of turning things off you start to turn things on.
But the accessibility problem with all: unset is its "radicality". When everything is reset or deconstructed, everything is gone, but also the sensible parts. In concrete terms: Elements with all: unset applied lose their "native" focus outline styling. So it is kind of like comparable to ARIA – only use it, when you know what it's doing and what you have to (re)implement.