separate between rows
This will work I think:

WITH x AS
(
    SELECT *, rn = ROW_NUMBER() OVER (ORDER BY category_sort, id) - 1,
              halfsize = (1 + COUNT(*) OVER ()) / 2
    FROM @yourtable
)
SELECT id, name, category_sort
FROM x
ORDER BY rn % halfsize, rn ;


Test at dbfiddle.uk:



id | name      | category_sort
-: | :-------- | :------------
 6 | Campaign6 | Advertizing  
 3 | Campaign3 | Food         
 1 | Campaign1 | Beverage     
 5 | Campaign5 | Hot Drinks   
 2 | Campaign2 | Beverage     
 7 | Campaign7 | Marketing    
 4 | Campaign4 | Beverage