Вихованець київських клубів «Зміна-Оболонь», «Зірка» (Київ) та РВФУК.
У 2014 році розпочав футбольну кар'єру в складі ковалівського «Колоса», який виступав в аматорському чемпіонаті України.
У 2015 році перейшов до ФК «Полтави». Дебютував у футболці «городян» 21 березня 2015 року в програному (1:2) виїзному поєдинку 18-о туру першої ліги чемпіонату України проти київського «Динамо-2». Дмитро вийшов на поле в стартовому складі, а на 52-й хвилині його замінив Максим Зеленевич[1]. Єдиним голом у складі полтавчан відзначився 23 травня 2015 року на 78-й хвилині програного (2:4) виїзного поєдинку 28-о туру першої ліги проти МФК «Миколаєва». Шастал вийшов на поле на 53-й хвилині, замінивши Максима Зеленевича[2]. У складі «Полтави» в чемпіонаті України зіграв 21 матч та відзначився 1 голом, ще 1 поєдинок провів у кубку України.
У 2016 році став гравцем новокаховської «Енергії». Дебютував у складі «Енергії» 24 липня 2016 року в нічийному (2:2) виїзному поєдинку 1-о туру другої ліги чемпіонату України проти вінницької «Ниви». Дмитро вийшов на поле в стартовому складі та відіграв увесь матч, а на 13-й хвилині отримав жовту картку[3]. Дебютними голами в складі новокаховців відзначився 5 серпня 2016 року на 42-й та 51-й хвилинах переможного (5:0) виїзного поєдинку 3-о туру другої ліги проти білоцерківської «Арсеналу-Київщини». Шастал вийшов на поле в стартовому складі та відіграв увесь матч[4]. У футболці «Енергії» в другій лізі зіграв 47 матчів та відзначився 28-а голами, ще 3 матчі (1 гол) провів у кубку України.
На початку січня 2018 року відправився на перегляд до «Олександрії», з якою вирушив на перший турецький збір[5]. 2 лютого 2018 року підписав 3-річний контракт з олександрійським клубом[6]. Дебютував за основний склад «Олександрії» 6 березня 2018 року в матчі 22 туру УПЛ проти «Зірки» (Кропивницький), вийшовши на заміну на 69-й хвилині зустрічі.