That's normal. It doesn't really make sense to send a new walking packet for your own character after using @refresh. But you can forcefully send it again in the clif_refresh function (in clif.cpp). Just add the following at the end of the function.
struct unit_data* ud = unit_bl2ud(&sd->bl);
if (ud && ud->walktimer != INVALID_TIMER) {
unit_walktoxy(&sd->bl, ud->to_x, ud->to_y, 4);
}
Though, it will look a tad weird because the character has to walk from a center cell, so it will "walk back" when using @refresh. You could also send a "unit_stop_walking(&sd->bl, USW_NONE);" if you want the character to stop moving instead. Whichever you prefer.