First redefine your directions to start at 0 - saves a lot of unnecessary code and even more unnecessary religious discussions with LUA programmers
Then create a table of pointers to your graphics:
TBL_GFX_PTR_LO:
.byte <(PlayerDirectionUpGraphic)
.byte <(PlayerDirectionDownGraphic)
.byte <(PlayerDirectionLeftGraphic)
.byte <(PlayerDirectionRightGraphic)
we need two bytes for a sprite pointer:
PlayerGfxPtr ds 2
each frame we initialise said pointer (first HI- then LO-byte):
lda #>(PlayerDirectionUpGraphic)
sta PlayerGfxPtr+1
ldy PlayerDirection
lda TBL_GFX_PTR_LO,y
sta PlayerGfxPtr
now, in our kernel, we can load from that pointer:
lda (PlayerGfxPtr),y
sta GRP0
(I'm writing this code from memory, be wary)