I think part of the problem here for example is
>That is, Verilog is to an FPGA as an ISA is to a CPU.
No! Not at all! For a start I can literally write verilog that won't work on any FPGA ever
always @ (rising edge multiplier_result[8]) begin $print("This is nuts!") end
Verilog is not an FPGA language, Verilog is a hardware language that Vendors implement a subset of on any given FPGA.
Here would be my advice to someone who wants a better abstraction for FPGAs: stop relating them to other things that behave very differently. Timing is important, placement is important, mapping is important. If your abstraction doesn't include these elements it is fundamentally flawed.