Does Druid have anything to show formatted numbers semantically?

Yes, just be sure to cast to the right type, since the Java implementation is dependent on the underlying data:

select STRING_FORMAT( '%,8d%n%n', cast(123456789 as INTEGER) * 1)

Read about the formatting here, and the Druid context here.