lower the number of allocations in broadcastwriter

This PR changes the JSONLog marshalling to use custom code for marshalling. This helps improve performance and to lower the amount of allocated memory.

```
benchmark                    old ns/op     new ns/op     delta       
BenchmarkBroadcastWriter     3274647       1165596       -64.41%     

benchmark                    old MB/s     new MB/s     speedup     
BenchmarkBroadcastWriter     7.56         21.23        2.81x       

benchmark                    old allocs     new allocs     delta       
BenchmarkBroadcastWriter     7550           2510           -66.75%     

benchmark                    old bytes     new bytes     delta       
BenchmarkBroadcastWriter     590654        96739         -83.62%
```

Fixes #3040
Fixes #7757