You can change the byte array to a List of byte and do all the changes including inserts there.Then change back.
Details will depend on your situation, e.g. array size and performance issues. The conversions are simple, but not free..
List<byte> bList = arr.ToList();
// ...do your changes and inserts...
arr = bList.ToArray<byte>();