With Late Push, Johnson Edges Hamlin at Martinsville