да нормально оно работает. Кортексы старше M0 умеют читать невыровненные данные (теми же самыми инструкциями, что и выровненные, кроме "особо длинных" LDRD / LDMIA). То, что эти инструкции будут обращаться к памяти не один раз, а два, и где-то в недрах процессора склеивать результат, на мой взгляд, никак не тянет на "очень медленно".
"Очень медленно" - это переписывать на ровном месте код склеивания битовых полей, когда захочется в середину байтик добавить.