Which FPGA?
1 extra parallel DFF buffer at the output pins in your FPGA code, especially if you instruct your compiler/fitter to use the IO pin registers for that DFF buffer can clean thing up dramatically, parallel skew timing included. Also, look at output drive current and slew rate settings for those outputs, that can help too since you may have an FPGA with 250MHz capable IOs, but you are only outputting a 20MHz or less data. Also, when clocking your FPGA, make sure you use a global clock network, or, an internal PLL.
I've yet to make an Altera FPGA design in the past 10 years with any dirty outputs. Now, if the noise is created by your PCB design, this is something else you need to take care of and you still shouldn't need some sort of buffer unless you are converting something like a 1.2v fpga output to a 5v signal for the dac input.