The LT3080 does seem a little expensive (well duh it's LT) but it seems really simple and easy, quality regulation - better than setting up extra parts and a negative rail converter on an LM317 to make it go down to zero, which will be nearly as expensive and not as good.
Here's a challenge.
The program current on the LT3080 is 10 uA.
Therefore, to go from 0-5V you would have a 500k

variable resistor.
But what if the pot was already committed, already glued to the devices, absolutely can't be changed and it's a 10k

pot?
Is there any nice way that we could set 0-5V using a pot which must be 10k?