I defer to the IEEE Standards; I believe the AES uses something similar. But yes you must ensure the sine wave(s) are an integer number of complete cycles within the number of samples you acquire for the FFT. The idea is to avoid any discontinuities that require windowing in the FFT. In addition you want them all relatively prime to each other and the sampling rate to avoid multiple tones in each FFT bin or spectral leakage spanning multiple bins. This has been known for many years (many decades) but not always implemented correctly, sometimes through ignorance or mistakes, sometimes through SW/HW limitations. And sometimes test requirements specify frequencies that do not meet those criteria (at least in the RF world).
As for Multitone,
@pkane has discussed his scheme many times on ASR, and his current program correctly calculates multiple tones with noise floor at the numerical limit. I think he has several ways to generate them, or you may be using an older version, but I know he has shown results equivalent to yours. Most any program should do that. Real HW and various SW implementations use fewer bits, often integers, for efficiency in processing and memory use. A lot of DSP chips are integer, not floating-point, for example.
In deference to
@dualazmak's post, creating a good noise source numerically has long been a somewhat challenging problem. In the late 1970's I built a small pink noise generator from a kit schematic and found it exhibited tones and was not large (long) enough (not enough bits in the shift register) to produce a decent 10 Hz lower end. I ended up learning enough to roll my own and built it using a bunch of SSI/MSI TTL chips on a board about the size of a piece of paper (8.5" x 11"). These days a little chip offers better performance and much more flexibility, but you still have to watch out for the sort of bugs delineated in this thread.
Edit: Paul beat me to it, natch...