I would still use an arithmetic formula instead of string manipulation.
CREATE FUNCTION ConvertLegacyIntToDate
(
@LegacyDate int
)
RETURNS TABLE WITH SCHEMABINDING AS
RETURN
SELECT CAST( CAST( 19000000 + oldDate AS CHAR(8)) AS date) as NewDate
Or I would just use the formula each time. As Sean mentioned, scalar functions are bad for performance and can be replaced by inline table valued functions, but it seems overkill this time, IMHO.