Hindrance in TSQL SVF Call
Why does SQL server run ths inline SVF query slower - both in CPU and
  elapsed time?


Scalar valued functions are executed in a different context than the main query and setting that up for each call takes time. 


  By centralising some simple logic it appears I impede performance
  through code reuse.


Yes, for scalar valued functions that is true.


  If SQL server always impedes performance when using SVF why would I
  ever use them


Good question, not sure if I can provide a use case where a scalar valued function would be the obvious answer.


  is there a different solution?


Yes, you can use an inline table valued function instead. 

create function dbo.usvf_CalculateShipping2
(
    @PricePerKG float = 1,
    @Type tinyint,
    @WeightInKG float = 1
)
returns table as return 
select case
         when @Type = 1 then 0.1
         when @Type = 2 then 0.2
         when @Type = 3 then 0.35
         when @Type = 4 then 0.43
       end * @PricePerKG * @WeightInKG as Shipping


You also have to change the way you call the function.

select ProductID, 
       (
       select Shipping 
       from dbo.usvf_CalculateShipping2(Price, [Type], [Weight])
       ) 
from temp_Products
where [Weight] between 2 and 8